设计和 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 将国家/地区变量添加到数据库

  1. 新建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

  1. 创建路由以允许 Rails 可以通过添加这些行路由来覆盖控制器 在 routes.rb

devise_for :users, :controllers => { :registrations => 'registrations' }

重要请确保您的 routes.rb 中没有任何 devise_for :users 行,如果有,请将其删除

好吧,现在我可以使用 <%= country_select("user", "country") %> 毫无问题地将国家选择保存到数据库中了