我創建了一個語言模型,以便讓我的Rails 4應用程序上的用戶可以使用本地語言更新其配置文件。使用collection_select更新Devise用戶
這些關係是語言has_many :users
和用戶belongs_to :language
。
在由設計所提供的註冊編輯文件,我說要選擇的語言,像這樣:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
<%= devise_error_messages! %>
<div class="form-group">
<%= f.label :name %>
<%= f.text_field :name, :autofocus => true, class: "form-control" %>
</div>
<%= collection_select(resource, :language_id, Language.all, :id, :name, :prompt => 'Please select language') %>
<div class="form-group"><%= f.label :email %><br />
<%= f.email_field :email, class: "form-control" %></div>
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
<div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
<% end %>
<div class="form-group"><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
<%= f.password_field :password, autocomplete: "off", class: "form-control" %></div>
<div class="form-group"><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "off", class: "form-control" %></div>
<div class="form-group"><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
<%= f.password_field :current_password, autocomplete: "off", class: "form-control" %></div>
<div class="form-group"><%= f.submit "Update", class: "btn btn-primary" %></div>
我也有這個在制定強有力的PARAMS我application_controller文件:
before_filter :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :name
devise_parameter_sanitizer.for(:sign_in) << :email
devise_parameter_sanitizer.for(:account_update) do |u|
u.permit(:name, :email, :language_id, :current_password)
end
end
這顯示正常,但實際上並沒有用他們選擇的語言更新user.language_id字段。
我怎樣才能得到這個保存他們的選擇?謝謝您的幫助。
請粘貼完整的表格! – Ajay
對不起,我現在加入:) – user1573016