Rails - 组合变量并将其保存在Controller中

时间:2013-06-19 16:29:05

标签: ruby-on-rails

我有一个“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”保存到数据库中。我不能这样做是控制器吗?

1 个答案:

答案 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_aword_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