设计和 country_select gem 不将选择保存到数据库 Rails4
Devise and country_select gem don't save selection into database Rails4
我正在尝试在 Devise 注册中添加国家/地区选择,我使用 country_select gem 来自 https://github.com/stefanpenner/country_select#example
这里解释了使用country_select("user", "country")
使用模型和属性作为参数的简单用法:
问题: 当我按下提交按钮时,用户被创建并且一切都很好,除了国家列没有我选择的数据
目的:提交注册后,我想将我从注册表单中选择的国家插入数据库(table:用户,列:国家)也
sign_up.html.erb
<h2><center>Sign up</center></h2>
<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= f.error_notification %>
<div class="form-inputs" style="float; margin:0 auto;width:35%">
<%= f.input :email, required: true, autofocus: true %>
<%= f.input :password, required: true %>
<%= f.input :password_confirmation, required: true %>
<%= f.label :country %>
<%= country_select("user", "country") %> <<-- My model's name is user.rb and in my users table has a country column
</div>
<div class="form-actions" style="float; margin:0 auto;width:10%">
<%= f.button :submit, "Sign up" %>
</div>
<% end %>
**我的模特名字是 user.rb 并且在我的用户 table 中有一个国家列
感谢提前
试试这个
<%= f.input :country, as: :country %>
我已经按照这个问题解决了我的问题并适应了我的问题Adding extra registration fields with Devise
我正在创建覆盖控制器(在本例中为注册控制器)以允许 Devise 将国家/地区变量添加到数据库
- 新建
registrations_controller.rb
我在这个文件里添加了:country
class RegistrationsController < Devise::RegistrationsController
before_filter :configure_permitted_parameters, :only => [:create]
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :country) }
end
end
你可以在这个link看到原来的registrations_controller.rb:https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb
- 创建路由以允许 Rails 可以通过添加这些行路由来覆盖控制器
在
routes.rb
devise_for :users, :controllers => { :registrations => 'registrations' }
重要请确保您的 routes.rb
中没有任何 devise_for :users
行,如果有,请将其删除
好吧,现在我可以使用 <%= country_select("user", "country") %>
毫无问题地将国家选择保存到数据库中了
我正在尝试在 Devise 注册中添加国家/地区选择,我使用 country_select gem 来自 https://github.com/stefanpenner/country_select#example
这里解释了使用country_select("user", "country")
使用模型和属性作为参数的简单用法:
问题: 当我按下提交按钮时,用户被创建并且一切都很好,除了国家列没有我选择的数据
目的:提交注册后,我想将我从注册表单中选择的国家插入数据库(table:用户,列:国家)也
sign_up.html.erb
<h2><center>Sign up</center></h2>
<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= f.error_notification %>
<div class="form-inputs" style="float; margin:0 auto;width:35%">
<%= f.input :email, required: true, autofocus: true %>
<%= f.input :password, required: true %>
<%= f.input :password_confirmation, required: true %>
<%= f.label :country %>
<%= country_select("user", "country") %> <<-- My model's name is user.rb and in my users table has a country column
</div>
<div class="form-actions" style="float; margin:0 auto;width:10%">
<%= f.button :submit, "Sign up" %>
</div>
<% end %>
**我的模特名字是 user.rb 并且在我的用户 table 中有一个国家列
感谢提前
试试这个
<%= f.input :country, as: :country %>
我已经按照这个问题解决了我的问题并适应了我的问题Adding extra registration fields with Devise
我正在创建覆盖控制器(在本例中为注册控制器)以允许 Devise 将国家/地区变量添加到数据库
- 新建
registrations_controller.rb
我在这个文件里添加了:country
class RegistrationsController < Devise::RegistrationsController
before_filter :configure_permitted_parameters, :only => [:create]
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :country) }
end
end
你可以在这个link看到原来的registrations_controller.rb:https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb
- 创建路由以允许 Rails 可以通过添加这些行路由来覆盖控制器
在
routes.rb
devise_for :users, :controllers => { :registrations => 'registrations' }
重要请确保您的 routes.rb
中没有任何 devise_for :users
行,如果有,请将其删除
好吧,现在我可以使用 <%= country_select("user", "country") %>
毫无问题地将国家选择保存到数据库中了