2013-06-19 57 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

是的,如果它是关联的模型。我不建议提及不相关的模型,这将是一个糟糕的设计。 –

相关问题