Ruby on rails Rails应用程序提供了;“无方法错误”;当它看到<;%如果当前用户为\u user.admin?%&燃气轮机;
我在“用户”视图中使用了此代码,没有遇到任何问题:。但是在与不同控制器关联的一组视图中使用它会抛出“无方法错误” 背景:该应用程序允许管理员创建清道夫搜索。管理员应该能够删除搜索。我以为我知道如何配置一切,但显然,我遗漏了一些东西。这是我的密码: controller.rbRuby on rails Rails应用程序提供了;“无方法错误”;当它看到<;%如果当前用户为\u user.admin?%&燃气轮机;,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在“用户”视图中使用了此代码,没有遇到任何问题:。但是在与不同控制器关联的一组视图中使用它会抛出“无方法错误” 背景:该应用程序允许管理员创建清道夫搜索。管理员应该能够删除搜索。我以为我知道如何配置一切,但显然,我遗漏了一些东西。这是我的密码: controller.rb class HuntsController < ApplicationController def index @title = "All Hunts" @hunts = Hunt.order
class HuntsController < ApplicationController
def index
@title = "All Hunts"
@hunts = Hunt.order("name ASC")
end
def show
@hunt = Hunt.find(params[:id])
@title = @hunt.name
end
def new
@hunt = Hunt.new
@title = "New Hunt"
end
def create
@hunt = Hunt.new(params[:hunt])
if @hunt.save
flash[:success] = "Hunt created!"
redirect_to hunts
else
@title = "New Hunt"
render 'new'
end
end
def edit
@hunt = Hunt.find(params[:id])
@title = "Edit hunt"
end
def delete
Hunt.find(params[:id]).destroy
flash[:success] = "Hunt destroyed."
redirect_to index
end
end
当前用户
为nil
,因此不知道如何响应管理员?
。请确保current_user
始终是一个用户实例,或者检查它不是nil
在Ruby 2.3+中,可以使用“安全导航”操作符(&.
):
在Ruby 2.2及更早版本中,改用布尔短路:
if current_user && current_user.admin?
请注意,ActiveSupport有try
,但有不同的行为,可能会隐藏bug。对于类似的行为,请使用
在Ruby中,获取“未定义的方法(undefined method)\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu for nil:NilClass”是一个非常常见的现象,所以要习惯它经常发生
:)
当前用户是nil
,因此不知道如何响应管理员?
。请确保current_user
始终是一个用户实例,或者检查它不是nil
在Ruby 2.3+中,可以使用“安全导航”操作符(&.
):
在Ruby 2.2及更早版本中,改用布尔短路:
if current_user && current_user.admin?
请注意,ActiveSupport有try
,但有不同的行为,可能会隐藏bug。对于类似的行为,请使用
在Ruby中,获取“未定义的方法\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuunil:NilClass”是一个非常常见的现象,因此要习惯它经常发生:)
您必须登录用户才能实例化当前用户。如果您正在使用Desive,请使用:
class HuntsController < ApplicationController
before_filter :authenticate_user!
def index
...
end
.......
end
class HuntsController
在你的控制器里。并确保在您的用户模型中定义了.admin?
方法。您必须登录用户才能实例化当前用户。如果您正在使用Desive,请使用:
class HuntsController < ApplicationController
before_filter :authenticate_user!
def index
...
end
.......
end
class HuntsController
在你的控制器里。并确保在您的用户模型中定义了.admin?
方法。确切和完整的错误是什么?我刚刚在问题的主要部分添加了错误信息。这是一个零级错误。当前用户
未在此控制器中定义。确切和完整的错误是什么?我刚刚将错误信息添加到问题的主要部分。这是一个零类错误。此控制器中未定义当前用户。。很漂亮!谢谢你的解释。添加“current_user&&”位解决了我的问题。您也可以使用对象#try
--current_user。try(:admin?
),如果current_user
为nil
漂亮,它将自动失败!谢谢你的解释。添加“current_user&&”位解决了我的问题。您也可以使用Object\try
--current_用户。try(:admin?
如果current_用户
为nil
if current_user && current_user.admin?
class HuntsController < ApplicationController
before_filter :authenticate_user!
def index
...
end
.......
end