0

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

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 来响应为true?

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

4

4 回答 4

1

你应该简单地做这样的事情:

<%= link_to "Sign up", signup_path(:admincheck => true), :class => "signup_button round" %>

然后在你的控制器中你可以admincheck得到@admincheck = params[:admincheck]

于 2011-03-04T07:39:53.247 回答
1

尝试使用过滤器来处理这些事情。视图不应该负责处理下一个请求的身份验证决定。

你到底想做什么?

于 2011-03-04T06:58:06.340 回答
1

您不能从控制器的视图中设置实例变量。考虑一下请求响应周期:

浏览器 -> 请求 -> 控制器 -> 视图 -> 响应 -> 浏览器

您想将某些内容从视图传递到控制器,并且由于上图中的视图位于下一行,因此它不能将变量传递给控制器​​,而是需要将数据作为表单字段传递并在控制器中捕获相同的内容Pravin 和 Ashihsh 建议。

于 2011-03-19T21:51:29.947 回答
1

您不能在控制器视图中设置实例变量。您可以将参数从视图传递给控制器​​,而不是这样做。我想你想添加一个检查,只有管理员才能“注册”。为此,您可以检查控制器中的当前用户状态并继续。

于 2011-03-04T06:51:01.953 回答