2013-07-18 67 views
0

我的環境是這樣的:主動管理輸出端產生從Seeds.rb不正確

Rails 3.2.13 
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin10.8.0] 
postsql 9.2 

我創建的國表此遷移:

class CreateStates < ActiveRecord::Migration 
    def up 
    create_table :states do |t| 
     t.string "states" 
     t.timestamps 
    end 
    end 
    def down 
    drop_table :states 
    end 
end 

我用這個種子.rb文件來填充我的狀態表:

State.delete_all 
open("/opt/nginx/html/blog/db/states.txt") do |states| 
states.read.each_line do |state| 
State.create!(:states => state) 
end 

在我的rails控制檯中輸出看起來很好(除了「 n「)

> state = State.first 
    State Load (0.6ms) SELECT "states".* FROM "states" LIMIT 1 
    => #<State id: 225, states: "Alabama\n", created_at: "2013-07-11 03:51:43", 
    updated_at: "2013-07-11 03:51:43"> 

使用一個關聯,國家位於會議的ActiveAdmin模塊中。但是,當在瀏覽器中呈現我得到這個:

<option value="225">#&lt;State:0x00000105a608f0&gt;</option> 

我敢肯定,耙db:種子引起的問題。 「/ n」是一個指示。

任何和所有幫助解決這個問題將不勝感激!

回答

0

您需要將states表中的states列重命名爲name,因爲它看起來很混亂。要擺脫尾隨\n你可以做

open("/opt/nginx/html/blog/db/states.txt") do |states| 
    states.read.each_line do |state| 
    State.create!(:states => state.chomp) 
end 
+0

謝謝!今晚會嘗試。但是,這是導致這個輸出問題的尾隨\ n? –

+0

編號'\ n'不是必需的。解決這個問題的另一種方法是在模型中重寫'to_s'方法。正如[建議](http://stackoverflow.com/a/8603335/1087546)所建議的,但是您應該更改名稱以避免混淆,並且不會造成任何覆蓋。 – benchwarmer

+0

完美工作!謝謝! –