Devise和country_select gem不会将选择保存到数据库Rails4中

时间:2015-04-16 08:47:34

标签: mysql ruby-on-rails ruby devise

我正在尝试在Devise注册中添加国家/地区选择,我使用来自https://github.com/stefanpenner/country_select#example的country_select gem

通过使用country_select("user", "country")使用模型和属性作为参数来解释简单用法:

问题:当我按下提交按钮时,用户已创建且状态良好,但国家/地区列没有来自我的选择的数据

目的:提交注册后我想将我从注册表单中选择的国家/地区插入数据库(表格:用户,列:国家/地区)

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,而我的users表中有一个国家/地区列

感谢您提前

2 个答案:

答案 0 :(得分:0)

试试这个

<%= f.input :country, as: :country %>

答案 1 :(得分:0)

我已按照此问题解决了我的问题并适应了我的问题Adding extra registration fields with Devise

我正在创建覆盖控制器(本例中为Registrations Controller),允许Devise将国家/地区变量添加到数据库

  1. 新建registrations_controller.rb
  2. 我在此文件中添加了: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
    

    您可以在此链接中看到原始registrations_controller.rb:https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb

    1. 创建一个路由以允许Rails通过添加这些行来路由覆盖控制器 在routes.rb
    2. devise_for :users, :controllers => { :registrations => 'registrations' }

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

      好吧,现在我可以使用<%= country_select("user", "country") %>将国家/地区选择保存到数据库中而没有任何问题