Rails为View的View设置Instance Variable

时间:2011-03-04 06:43:58

标签: ruby-on-rails variables views instance controllers

我正在尝试从视图中设置控制器的实例变量。例如:

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来回应那个是真的吗?

我不确定您是否可以在视图中分配实例变量值以供控制器使用。感谢

4 个答案:

答案 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已经建议的那样。