2013-06-19 55 views
1

我有一個「Word」模型,它有3個字符串變量:「word_a」,「word_b」,「word_ab」。Rails - 結合變量並將它們保存在控制器中

在我看來,一個表單收集值「word_a」和「word_b」:

<%= f.text_field :word_a %> 
    <%= f.text_field :word_b %> 

什麼是保存「word_ab」,它會自動從組合進行價值的最佳途徑「word_a」和「word_b」?

我現在這樣做的方式似乎真的是錯誤的。提交第一個表單後,我將控制器重定向到另一個具有「word_a」和「word_b」值的「word_ab」表單的編輯頁面。

<%= f.text_field :word_ab, :value => @word.word_a+"_"[email protected]_b %> 

然後用戶必須重新提交表單以將'word_ab'保存到數據庫中。我不能這樣做是一個控制器?

+1

創建getter方法是的,我相信你已經回答了你自己的問題。只需在控制器中的提交操作中進行組合。然後將這個存儲在你的數據存儲區 –

+0

謝謝核。那麼這是做到這一點的最佳方式嗎?多步驟形式? – JakeTy

+0

對不起核電。我讀錯了。控制器中的代碼是什麼樣的? – JakeTy

回答

1

您確定要將分值存入分貝嗎?怎麼編輯?

如果您仍然想這樣做 - 最好的辦法是在模型

attr_accessible :word_a, :word_b 
attr_accessor :word_a, :word_b 

第一行允許喲執行質量分配添加attr_accessor,第二個創建setter和getter方法。 然後,仍處於模型做

before_validation(:on => :create) do 
    self.word_ab = word_a + word_b 
end 

您可以before_save執行這項作業,您可能會定期驗證驗證word_aword_b分開。

臨提示:返回concated字符串

def word_ab 
    self.word_a + self.word_b 
end 

關聯模型

class User 
    has_one :profile_picture 

    def word_ab 
    self.profile_picture.url + self.word_a + self.word_b 
    end 

end 
+0

謝謝邁克爾。這工作完美。雖然你確實提出了一個關於編輯的好點,這會讓我重新思考這個方法。是否有可能將另一個模型的變量引入'word_ab'變量中?例如:self.word_ab = @ picture.name + word_a + word_b? – JakeTy

+0

是的,合併字符串總是很容易,難以分割它們,查看提示的更新答案。 –

+0

是的,如果它是關聯的模型。我不建議提及不相關的模型,這將是一個糟糕的設計。 –

相關問題