我正在尝试从视图中设置控制器的实例变量。例如:
class UsersController
def new
@admincheck = false
end
在视图中:home.html.erb
<%= link_to "Sign up", signup_path, @admincheck => true, :class => "signup_button round" %>
在视图中将@admincheck设置为true,UsersController是否会通过接收@admincheck来回应那个是真的吗?
我不确定您是否可以在视图中分配实例变量值以供控制器使用。感谢
答案 0 :(得分:1)
您无法在控制器的视图中设置实例变量。 您可以将参数从视图传递到控制器,而不是这样做。 我想你想添加一个只有管理员才能“注册”的支票。 为此,您可以检查控制器中的当前用户状态并继续。
答案 1 :(得分:1)
尝试使用Filters来处理这类事情。处理下一个请求的身份验证决策不应该是视图的责任。
你想做什么?
答案 2 :(得分:1)
你应该做这样的事情:
<%= link_to "Sign up", signup_path(:admincheck => true), :class => "signup_button round" %>
然后在您的控制器中,您可以admincheck
作为@admincheck = params[:admincheck]
答案 3 :(得分:1)
您无法从控制器的视图中设置实例变量。考虑一下请求响应周期:
浏览器 - &gt;请求 - &gt;控制器 - &gt;查看 - &gt;回复 - &gt;浏览器
您希望将某些内容从视图传递到控制器,并且由于视图位于上图中,它无法将变量传递给控制器,而是需要将数据作为表单字段传递并捕获相同的内容。正如Pravin和Ashihsh已经建议的那样。