通过表单中的单选按钮传递数据库中的值

时间:2014-10-08 18:55:05

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个问题,因为我是Ruby on Rails的新手。我正在使用form_for提交一些值。我通过隐藏字段传递值作为登录用户的角色。用户依赖于其角色。如果role是client,则将用户重定向到客户端页面,如果role是admin,则user将重定向到admin页面。我通过隐藏字段分配角色如下: 现在我想删除隐藏字段,并希望通过单选按钮分配角色。请帮助我如何通过单选按钮传递角色。我将非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你需要这样的东西:

<%= 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' %>

答案 1 :(得分:0)

假设您的@roles是一个数组:

@roles = ['client', 'admin']

然后在View中你可以做到:

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

在您的控制器中:

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

使用正确的params[:user][:role]键更改params以访问响应中传递的值。另外,使用您在应用程序中拥有的实际路由助手更改client_pathadmin_path