2014-11-22 58 views
2

我有用於用戶註冊的表單。用戶必須通過選擇選項選擇他的國家。當我提交表單我得到錯誤國家(#70309119520500)預期,得到字符串(#8039220) 請幫助我請如何將字符串轉換爲整數,所以我可以在數據庫中插入記錄。Rails 4:f.select返回字符串不是整數

ruby -v: ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux] 
rails -v: Rails 4.1.8 

這是我html.rb形式

<%= form_for :user, url: users_path do |f| %> 
    <div class="field"> 
     <%= f.label :countries %> 
     <% options = options_from_collection_for_select(Country.all, 'id', 'country', 1) %> 
     <%= f.select :country, options %> 
    </div> 
<% end %> 

這是要求

Parameters: 

{"utf8"=>"✓", 
"authenticity_token"=>"34/KncZpwhEDYRZuWe09nKmF7DG7+lEu0IBxe9YbKnE=", 
"user"=>{"firm"=>"Chillum doo", 
"name"=>"myname", 
"last_name"=>"mylastname", 
"address"=>"myAdress", 
"post_number"=>"0000", 
"city"=>"myCity", 
"country"=>"1", 
"telephone"=>"000000000", 
"mobile_phone"=>"000000000", 
"user_name"=>"myUserName", 
"email"=>"[email protected]", 
"password"=>"[FILTERED]", 
"password_confirmation"=>"[FILTERED]"}, 
"commit"=>"Create Account"} 

用戶控制器

class UsersController < ApplicationController 


    def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(user_params) 
    if @user.save! 
     redirect_to '/', notice: 'User registered successfully' 
    else 
     render 'new' 
    end 
    end 

    private 
    def user_params 
    params.require(:user).permit(:firm, :name, :last_name, :address, :post_number, 
           :city, :country, :telephone, :mobile_phone, :user_name, 
           :email, :password, :password_confirmation) 
    end 

end 

回答

1

。假定你的用戶模型belongs_to :country,你會希望你的形式提交country_id,而不是country。嘗試是這樣的:

<%= f.select :country_id, options %> 

你需要允許country_id作爲控制器的屬性了。

+0

不錯!謝謝,這讓我困擾了好幾個小時。 – 2014-11-22 21:26:58

0

在你create方法,你應該能夠迅速轉身:全國參數去一個整數,像這樣: @user = User.new(user_params.tap{ |u| u[:country] = u[:country].to_i })

相關問題