首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在rails 3.1.0中仅显示关联记录的名称

如何在rails 3.1.0中仅显示关联记录的名称
EN

Stack Overflow用户
提问于 2012-02-02 02:51:33
回答 1查看 87关注 0票数 0

在我们的rails 3.1.0应用中有询价,报价和test_item。询价有很多报价和测试项目。报价属于询价,有多个测试项目。测试项目有很多询价和报价。

创建报价时,rfq中的测试项目将直接传递到报价新表单中。下面是新的引号控制器中的代码:

代码语言:javascript
复制
  @quote = @rfq.quotes.new()
  @quote.test_items << @rfq.test_items

以下是引用新表单中的视图代码,用于显示从rfq传递的测试项目:

代码语言:javascript
复制
<%= simple_form_for([@rfq, @quote]) do |f| %>    
....        
  <% @quote.test_items.each do |t| %>   
    <p><%= f.association :test_items, :label => false %><%= link_to_remove_fields "remove", f %></p> 
  <% end %> 
....  
<% end %> 

上面的视图代码可以显示从rfq传递过来的测试项,并维护关联(quote有许多测试项),这是应用程序所需要的。但是,它还显示了此处不需要的测试项目的选择框(除了删除,不能更改报价中的测试项目。循环中的t也没有用)。我们只需要显示测试项目的名称,维护关联(quote有许多测试项目),并允许删除测试项目(由link_to_remove_fields完成)。

有没有一种干净利落的方法来实现这一点?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2012-02-02 08:59:37

看看Rails中的嵌套属性机制。它既需要模型声明,也需要accepts_nested_attributes_for,并受fields_for表单助手支持,这些助手也与simple_ form的simple_fields_for兼容。

我认为您的错误在于您显式地循环遍历test_items并调用f.assocation,这会告诉表单您想要选择一个不同的test_item。我认为您要做的是让用户通过复选框删除test_items。您将需要使用fields_for隐式循环遍历test_items列表,并使用nested_attributes允许删除。

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

https://stackoverflow.com/questions/9101480

复制
相关文章

相似问题

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