【问题标题】:Ruby on Rails, ActionView UrlHelper link_to new objectRuby on Rails,ActionView UrlHelper 链接到新对象
【发布时间】:2015-05-03 23:03:56
【问题描述】:

我有两个模型“projectaim”和“tender”,关系:

class Projectaim < ActiveRecord::Base
  has_many :tenders
end

...几乎标准的控制器

... 和意见: 假设主对象@projectaim 已经创建。

在其编辑视图 edit.html.erb 上,我必须创建一个链接以在单独的表单上创建下属 @tender

 <% @tender.projectaim_id = @projectaim.id %>
 <%=link_to "Add new tender", new_tender_path(@tender)%>

您能否告诉我如何参数化新的招标动作(或视图)以基于模型保持关系?从技术上讲,我需要在新的招标操作中填写tender.projectaim_id 项目吗?谢谢大家。

【问题讨论】:

  • 嵌套资源是你的朋友。
  • 感谢帮助,现在我正在研究嵌套资源。似乎可以理解。

标签: ruby-on-rails actionview


【解决方案1】:

在这种情况下,您可能应该使用nested resources

您的路线文件看起来像这样

resources :projectaims do
  resources :tenders
end

你会做一个这样的链接

<%=link_to "Add new tender", new_projectaim_tender_path(@projectaim, @tender)%>

在您的控制器中,除了 params[:id] 之外,您现在还有 params[:projectaim_id]。

【讨论】:

  • 很好的提示,非常感谢您提供的信息。现在我尝试手动编辑控制器和视图并取得部分成功。请告诉我,有没有办法因为 params 和 form_for 重新生成它们?谢谢。
  • 我不确定我是否正确理解了您的问题,但是如果您需要 form_for 帮助器使用嵌套资源,您可以查看这个 SO 问题stackoverflow.com/questions/2034700/…
  • 我觉得你很了解我,这篇文章很有价值。我必须手动编辑正确的控制器和视图。原则是这两个对象都应该在投标控制器(@projectaim 和@tenders)中创建,然后我可以在投标表单 form_for([@projectaim,@tenders])上使用它。我必须手动自定义控制器参数,如果生成脚手架可能没有任何自动化。谢谢你的帮助。
  • 太好了,如果您的问题已解决,请随时将答案标记为正确 :) 谢谢
  • 一开始看起来像 url helper 问题,然后我发现我需要嵌套资源和控制器自定义。关于这个问题的好帖子在这里link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
相关资源
最近更新 更多