我正在创建一个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" %>
我觉得我在表单提交中做错了但却无法弄清楚它是什么。任何帮助表示赞赏
答案 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
通过这种方式,您可以获得您发送的数据以及预期的数据。