<%= current_user.role%>在Rails 4中评估为零

时间:2015-06-05 18:53:01

标签: ruby-on-rails forms ruby-on-rails-4 devise views

我正在创建一个Rails应用程序,并尝试在视图上显示用户的角色。我正在使用的代码是:

<%= current_user.role %>

哪个不评估任何东西。

我正在使用设计用户注册,我的注册视图如下:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
    <%= devise_error_messages! %>

    <div class="login-field">
      <%= f.email_field :email, :placeholder => "Email"  %>
    </div>

    <div class="login-field">
      <%= f.password_field :password, autocomplete: "off", :placeholder => "Password (8 character min)"  %>
    </div>

    <div class="login-field">
        <%= f.text_field :firstname, :placeholder => "First Name"  %>
    </div>

    <div class="login-field">
        <%= f.text_field :lastname, :placeholder => "Last Name"  %>
    </div>

    <div class="login-field">
        <%= f.text_field :phone, :placeholder => "Phone Number"  %>
    </div>

    <%= f.select(:role, ['Role 1', 'Role 2', 'Both']) %>

    <br>

    <div><%= f.submit "Signup" , :class => "btn btn-success btn-lg" %></div>

  <% end %>

  <%= render "devise/shared/links" %> 

我觉得我在表单提交中做错了但却无法弄清楚它是什么。任何帮助表示赞赏

2 个答案:

答案 0 :(得分:0)

您应该覆盖Devise注册中的sign_up_params。创建继承自RegistrationsController的{​​{1}}后,您可以覆盖Devise::RegistrationsController

sign_up_params

您还需要将class RegistrationsController < Devise::RegistrationsController private def sign_up_params params.require(:user).permit(:first_name, :last_name, :email, :phone, :role ... any other attributes) end end 更改为指向新创建的控制器:

routes.rb

答案 1 :(得分:0)

您可以将其放在create action

的顶部
return render text: params.inspect # get what the form sended

和或

return render text: create_params # get what the values you permitted

通过这种方式,您可以获得您发送的数据以及预期的数据。