我不知道怎么做才是正确的,所以我希望得到一些关于如何“好”做这件事的建议。假设您有一个具有多个关系的模型,例如一本书。一本书有作者(用户)和出版商:
belongs_to :user
belongs_to :publisher太棒了。用户通过“有很多:通过”登录到发布者。
has_many :contracts
has_many :publishers, through: :contractspublisher模型也是如此。作者和出版商都有很多书。到目前一切尚好。现在您有了一个publisher-show-view,您可以在其中呈现图书的form-partial,因为您希望直接从publisher的“show”-view添加图书。
现在,您想要向关系提交表单和原因,您必须将出版商和作者数据提供给图书模型。
现在的问题是,如何做到这一点。将数据合并到该书的create方法中的参数中似乎效果很好:found on stackoverflow。
我曾经想过要用author_id在表单中创建一个隐藏字段,但我没有去尝试它,因为不知何故它让人感觉很脏。
做这件事的“正确”方法是什么?先谢谢你...
发布于 2013-05-17 19:01:10
您可以使用嵌套模型、表单和嵌套属性来完成此操作。在这个主题上有两个RailsCasts:part 1和part 2,您可以在其中看到它是如何工作的。还有mandatory documentation on subject。
如果您选择这种方式,以下是最新rails版本的更新方法版本:
def link_to_remove_fields(name, f)
f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)", :class => "icon-remove")
end
def link_to_add_fields(name, f, association)
new_object = f.object.class.reflect_on_association(association).klass.new
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render(association.to_s.singularize + "_fields", :f => builder)
end
link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")")
end因为截屏视频版本将不能在更高版本的rails上运行。
https://stackoverflow.com/questions/14890296
复制相似问题