Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 控制器视图中的Rails设置实例变量_Ruby On Rails_Variables_Views_Instance_Controllers - Fatal编程技术网

Ruby on rails 控制器视图中的Rails设置实例变量

Ruby on rails 控制器视图中的Rails设置实例变量,ruby-on-rails,variables,views,instance,controllers,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" %> true,:class=>“注册按钮回合”%> 在视图中将@admincheck设置为true

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

class UsersController

def new
  @admincheck = false
end
视图:home.html.erb

<%= link_to "Sign up", signup_path, @admincheck => true, :class => "signup_button round" %>
true,:class=>“注册按钮回合”%>
在视图中将@admincheck设置为true时,UsersController是否会通过接收@admincheck来响应该设置


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

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

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

尝试使用来处理此类事情。视图不应该负责处理下一个请求的身份验证决策

你到底想做什么?

试着用它来处理这类事情。视图不应该负责处理下一个请求的身份验证决策


你到底想做什么?

你只需做如下事情:

<%= link_to "Sign up", signup_path(:admincheck => true), :class => "signup_button round" %>
true),:class=>“注册按钮回合”%>

然后在控制器中,您可以通过
@admincheck=params[:admincheck]
获得
admincheck
,您只需执行以下操作:

<%= link_to "Sign up", signup_path(:admincheck => true), :class => "signup_button round" %>
true),:class=>“注册按钮回合”%>

然后,在控制器中,您可以以
@admincheck=params[:admincheck]
的形式获取
admincheck
,因为您无法从控制器的视图中设置实例变量。考虑到请求-响应周期:

浏览器->请求->控制器->查看->响应->浏览器


您希望将某个对象从视图传递到控制器,而在上图中,视图位于下方,因此无法将变量传递到控制器,相反,您需要将数据作为表单字段传递,并按照Pravin和Ashihsh的建议在控制器中捕获相同的数据。

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

浏览器->请求->控制器->查看->响应->浏览器


您希望将某些内容从视图传递到控制器,而在上图中,视图是向下的,它无法将变量传递到控制器,相反,您需要将数据作为表单字段传递,并在控制器中捕获相同的内容,正如Pravin和Ashihsh所建议的那样。

我有一个具有布尔管理列的用户表。我希望普通用户和管理员用户使用相同的表单注册。因此,我有两个不同的注册按钮指向同一个注册表单,但我试图通过表单将@admincheck实例变量设置为true,以便让控制器知道此人想要成为管理员,因此在用户表中将admin设置为true以获得特权。谢谢,我建议用户和管理员用户使用不同的资源。看看rails路由系统中的名称空间。使用名称空间,您可以将路由/users/new和/admin/users/new与相应的控制器users\u controller和admin/users\u controller一起使用。你会得到一个干净的分离。使用共享的方法和视图干燥代码。非常感谢您的输入Julian。我将研究一下,我有一个Users表,其中包含boolean admin列。我希望普通用户和管理员用户使用相同的表单注册。因此,我有两个不同的注册按钮指向同一个注册表单,但我试图通过表单将@admincheck实例变量设置为true,以便让控制器知道此人想要成为管理员,因此在用户表中将admin设置为true以获得特权。谢谢,我建议用户和管理员用户使用不同的资源。看看rails路由系统中的名称空间。使用名称空间,您可以将路由/users/new和/admin/users/new与相应的控制器users\u controller和admin/users\u controller一起使用。你会得到一个干净的分离。使用共享的方法和视图干燥代码。非常感谢您的输入Julian。我会调查的谢谢,我会调查的我真的希望管理员和普通用户使用相同的表单注册。我只想向控制器传递一些信息,让它知道这个人正试图注册为管理员或用户,这样它就可以相应地记录在数据库中。谢谢。谢谢,我会调查一下,我实际上希望管理员和普通用户使用相同的表单注册。我只想向控制器传递一些信息,让它知道这个人正试图注册为管理员或用户,这样它就可以相应地记录在数据库中。谢谢。那么@admincheck==真吗?我尝试过这个方法,但似乎不起作用那么@admincheck==true?我试过了,但它似乎不起作用。这是一个清楚而简单的解释,解释了为什么你做不到。这是一个清楚而简单的解释,解释了为什么你做不到。