首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails从多个模型添加参数

Rails从多个模型添加参数
EN

Stack Overflow用户
提问于 2013-02-15 15:52:43
回答 1查看 89关注 0票数 0

我不知道怎么做才是正确的,所以我希望得到一些关于如何“好”做这件事的建议。假设您有一个具有多个关系的模型,例如一本书。一本书有作者(用户)和出版商:

代码语言:javascript
运行
复制
belongs_to :user
belongs_to :publisher

太棒了。用户通过“有很多:通过”登录到发布者。

代码语言:javascript
运行
复制
has_many :contracts
has_many :publishers, through: :contracts

publisher模型也是如此。作者和出版商都有很多书。到目前一切尚好。现在您有了一个publisher-show-view,您可以在其中呈现图书的form-partial,因为您希望直接从publisher的“show”-view添加图书。

现在,您想要向关系提交表单和原因,您必须将出版商和作者数据提供给图书模型。

现在的问题是,如何做到这一点。将数据合并到该书的create方法中的参数中似乎效果很好:found on stackoverflow

我曾经想过要用author_id在表单中创建一个隐藏字段,但我没有去尝试它,因为不知何故它让人感觉很脏。

做这件事的“正确”方法是什么?先谢谢你...

EN

回答 1

Stack Overflow用户

发布于 2013-05-17 19:01:10

您可以使用嵌套模型、表单和嵌套属性来完成此操作。在这个主题上有两个RailsCasts:part 1part 2,您可以在其中看到它是如何工作的。还有mandatory documentation on subject

如果您选择这种方式,以下是最新rails版本的更新方法版本:

代码语言:javascript
运行
复制
  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上运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14890296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档