我有一个“Word”模型,它有3个字符串变量:“word_a”,“word_b”,“word_ab”。
我视图中的表单收集“word_a”和“word_b”的值:
<%= f.text_field :word_a %>
<%= f.text_field :word_b %>
保存“word_ab”值的最佳方法是什么,它将自动从“word_a”和“word_b”的组合中生成?
我现在这样做的方式似乎真的错了。提交第一个表单后,我让控制器重定向到另一个带有'word_ab'表单的编辑页面,该表单的值包含'word_a'和'word_b'。
<%= f.text_field :word_ab, :value => @word.word_a+"_"+@word.word_b %>
然后,用户必须重新提交表单以将“word_ab”保存到数据库中。我不能这样做是控制器吗?
答案 0 :(得分:1)
您确定要将连续值保存到db吗?编辑怎么样?
如果您仍想这样做 - 最好的想法是在模型中添加attr_accessor
attr_accessible :word_a, :word_b
attr_accessor :word_a, :word_b
第一行允许你执行质量分配,第二行允许你创建setter和getter方法。 然后,仍然在模型中做
before_validation(:on => :create) do
self.word_ab = word_a + word_b
end
您也可以在before_save
上执行此操作,并且可以使用常规验证器单独验证word_a
和word_b
。
专业提示:创建返回连接字符串
的getter方法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