Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 通过rails表单中的单选按钮在数据库中传递值

Ruby on rails 通过rails表单中的单选按钮在数据库中传递值,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有一个问题,因为我是RubyonRails新手。我正在使用的表单提交一些值。我将通过隐藏字段传递一个值作为登录用户的角色。用户依赖于其角色。若角色是客户端,那个么用户被重定向到客户端页面,若角色是管理员,那个么用户被重定向到管理员页面。我通过隐藏字段分配角色,如下所示: 现在我想删除隐藏字段,并想通过单选按钮分配角色。请帮助我如何通过表单中的单选按钮传递角色。我将非常感谢您的帮助。如果我理解正确,您需要这样的帮助: <%= f.radio_button :role, 'user', ch

我有一个问题,因为我是RubyonRails新手。我正在使用的表单提交一些值。我将通过隐藏字段传递一个值作为登录用户的角色。用户依赖于其角色。若角色是客户端,那个么用户被重定向到客户端页面,若角色是管理员,那个么用户被重定向到管理员页面。我通过隐藏字段分配角色,如下所示:
现在我想删除隐藏字段,并想通过单选按钮分配角色。请帮助我如何通过表单中的单选按钮传递角色。我将非常感谢您的帮助。

如果我理解正确,您需要这样的帮助:

<%= f.radio_button :role, 'user', checked: true %>
<%= label :role_user, 'User' %>

<%= f.radio_button :role, 'client' %>
<%= label :role_client, 'Client' %>

<%= f.radio_button :role, 'admin' %>
<%= label :role_admin, 'Admin' %>

假设您的
@角色是一个数组:

@roles = ['client', 'admin']
然后在视图中,您可以执行以下操作:

<% @roles.each do |role| %>
  <%= f.label :role, role.humanize, :value => role  %>
  <%= f.radio_button :role, role %>
<% end %>

使用正确的
params
键更改
params[:用户][:角色]
,以访问响应中传递的值。另外,使用应用程序中的实际路由帮助程序更改
客户端路径
管理员路径

能否显示:
@roles
有哪些功能?只需执行:
放置@roles.inspect
。感谢回复@surya。@roles返回client和admin。在我的url中有类似localhost:3000/blog/sign_-In?client的路径,然后@roles以client身份登录用户,如果url具有admin角色,则以admin身份登录。除非人们了解您正在尝试做什么以及您的具体情况,否则他们无法提供帮助手。您能提供创建/分配
@角色的代码吗?
?我只需要两个单选按钮。一个用于客户端,一个用于管理员。如果用户选中客户端按钮,则他应该在登录后重定向到客户端页面;如果选中管理员按钮,则应该重定向到管理员
before_filter :check_role

def check_role
  if params[:user][:role] == 'client'
    redirect_to client_path
  elsif [:user][:role] == 'admin'
    redirect_to admin_path
  end
end