Ruby on rails 未定义的方法'fetch#u value';无:无类别外观设计注册
我一直使用Desive进行身份验证。它很简单,而且可以定制。今天我开始在无缘无故注册新用户时出错。没有捆绑更新或什么都没有。没有从控制器或配置文件中意外删除某些内容。非常困惑。我在谷歌上搜索了这个常见错误,还没有找到解决办法。我尝试过不同版本的rails、Desive等,但似乎没有任何东西能解决它。重置我的数据库了。没有主意了。还有其他人有同样的问题吗?即将切换到不同的身份验证gem或只是从头开始构建,这在a中是一种痛苦,但我不知道还能做什么。现在是2019年,rails已经存在了一段时间,这不应该成为一个问题。你可以看出我很沮丧,哈哈 new_reviewer.html.erbRuby on rails 未定义的方法'fetch#u value';无:无类别外观设计注册,ruby-on-rails,forms,devise,registration,Ruby On Rails,Forms,Devise,Registration,我一直使用Desive进行身份验证。它很简单,而且可以定制。今天我开始在无缘无故注册新用户时出错。没有捆绑更新或什么都没有。没有从控制器或配置文件中意外删除某些内容。非常困惑。我在谷歌上搜索了这个常见错误,还没有找到解决办法。我尝试过不同版本的rails、Desive等,但似乎没有任何东西能解决它。重置我的数据库了。没有主意了。还有其他人有同样的问题吗?即将切换到不同的身份验证gem或只是从头开始构建,这在a中是一种痛苦,但我不知道还能做什么。现在是2019年,rails已经存在了一段时间,这不
今天就报名吧!
(最少字符)
#用户\u controller.rb
class UsersController < ApplicationController
def new_author
@user = User.new
end
def new_reviewer
@user = User.new
end
def show
@user = User.find(params[:id])
@user.books.each do |b|
@avg_rating = if b.reviews.blank?
0
else
b.reviews.average(:rating).round(2)
end
end
end
def profile
@current_user = current_user
@helpful = current_user.reviews.where(helpful: true)
@unhelpful = current_user.reviews.where(unhelpful: true)
@reviews = current_user.reviews
unhelpful = @unhelpful.count
total = @reviews.count
subtotal = total - unhelpful
@score = subtotal.to_f / total
end
def reviewer
if params[:search]
@reviewers_search = User.search(params[:search]).paginate(:page => params[:page], :per_page => 2)
else
@reviewers_search = User.where(access_level: :reviewer).order('first_name ASC').paginate(:page => params[:page], :per_page => 2)
end
end
def author
if params[:search]
@authors_search = User.search(params[:search]).paginate(:page => params[:page], :per_page => 2)
@author_rank = b.reviews.count
else
@authors_search = User.where(access_level: :author).order('first_name ASC').paginate(:page => params[:page], :per_page => 2)
end
end
def edit
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to @user
end
end
def destroy
user = User.find(params[:id])
user.destroy
redirect_to root_path
end
private
def user_params
params.require(:user).permit(:bio, :ranking, :first_name, :last_name, :email, :password, :avatar, :access_level)
end
end
class UsersControllerparams[:page],:per_page=>2)
其他的
@reviewers\u search=User.where(访问级别::reviewer).order('first\u name ASC').paginate(:page=>params[:page],:per\u page=>2)
结束
结束
def作者
如果参数[:搜索]
@authors_search=User.search(params[:search]).paginate(:page=>params[:page],:per_page=>2)
@作者排名=b.reviews.count
其他的
@authors\u search=User.where(访问级别::author).order('first\u name ASC').paginate(:page=>params[:page],:per\u page=>2)
结束
结束
定义编辑
结束
def更新
@user=user.find(参数[:id])
如果@user.update(用户参数)
将_重定向到@user
结束
结束
def销毁
user=user.find(参数[:id])
用户破坏
将\重定向到根\路径
结束
私有的
def用户参数
参数require(:user).permit(:bio,:ranking,:first_name,:last_name,:email,:password,:avatar,:access_level)
结束
结束
以下是来自终端的堆栈跟踪:
ActionView::Template::Error(未定义nil:NilClass的'fetch_value'方法):
1:
2:
三:
4:今天就报名吧!
5:
app/views/users/new\u reviewer.html.erb:2:在“app\u views\u users\u new\u reviewer\u html\u erb\u 2780381832095941109\u 4740298557320”中
在我的user.rb文件中,我初始化了一个不再需要执行的对象,它导致了错误。摆脱了初始化器和爆炸。重操旧业。吸取的教训
def initialize(array)
@array = array
end
def count_increases
@array = self.reviews.size
if @array += 1
self.increment!(:ranking, 2)
end
end
你为什么不发布最重要的部分-跟踪的全部错误?我道歉。我很快会修改这个问题。当我感到压力过大时,我问了这个问题,因为我的银行账户被泄露了,我的德国车可能需要再次修理。希望它能给我们一些启示。我知道其他人在stackoverflow上也问过同样的问题,我只是没能从回答中获益。也许你在初始化的末尾加了“super”。也许这个类有一个父类,它有自己的initialize并使用了一些参数。您确实重写了父级初始化,但没有提供相同的参数。有时jsut“super”还不够,如果父级使用,则需要传递额外的*参数和&block参数。您是对的。它有一个父类。类用户。你所说的一切很可能都是正确的。你的知识非常先进。在我的rails/ruby知识方面,我仍然是一个新手和青少年,但在我的开发经验中,我终于“达到了目标”。谢谢你的意见!
ActionView::Template::Error (undefined method `fetch_value' for nil:NilClass):
1:
2: <%= form_for(@user, url: registration_path(@user)) do |f| %>
3: <div class="registration-container">
4: <h2>Sign up today!</h2>
5:
app/views/users/new_reviewer.html.erb:2:in `_app_views_users_new_reviewer_html_erb__2780381832095941109_47402928557320'
def initialize(array)
@array = array
end
def count_increases
@array = self.reviews.size
if @array += 1
self.increment!(:ranking, 2)
end
end