2017-03-03 34 views
0

我有一个名为sections的模型,它有许多反馈。这是工作正常,并在'节'显示页面我可以显示相关的'反馈'像这样:链接在Ruby on Rails中添加相关项目

<% @section.feedbacks.each do |feedback| %> 
    <%= feedback.name %> 
    <%= link_to 'Show', feedback %> 
    <%= link_to 'Edit', edit_feedback_path(feedback) %> | 
<% end %> 

工作正常。但现在我需要一个按钮,可以将我带到新建反馈项目的创建页面,并且需要将其关联到此“部分”。

起初我是用嵌套的形式做的,但反馈项目有很多字段,所以在一个页面上完成所有这些都很麻烦。

我是新来的红宝石,所以希望这是一件非常简单的事情!

在此先感谢您的帮助, 詹姆斯

回答

1

你应该使用嵌套的表格吧。如果您的表单包含很多字段,请使用引导程序向导。

<%= link_to 'New', new_feedback_path(section_id: @section.id) %> 

在新的feedback_controller方法&,写如下的:

@feedback = Feedback.new 
@feedback.section_id = params[:section_id] 
+0

我想尽量避免使用标签。 – user3429445

+0

因此,您不希望所有字段既不在单个页面中,也不在标签中。因此,只保存那些为您的业务逻辑强制使用的字段 –

+0

我希望单个页面中的所有字段,我只是不确定如何创建该链接来创建一个新项目形式的相关项目。 – user3429445

0

你正在尝试做的是非常标准的Rails的东西,你需要阅读了一下更多的官方指南。你将需要:

  • 与不同的动作控制器的反馈(editnew例如)
  • 对上述行动的一些看法。 editnew视图可以共享相同的表单。
  • 路由可以在Section的上下文中与Feedback一起使用。

像:

resources :sections do 
    resources :feedbacks 
end 

这将允许您使用以下的,而不是你的编辑链接:

<%= link_to 'Edit', edit_feedback_path([@section, feedback]) %> 

而且会去这个编辑路线:

/sections/:section_id/feedbacks/:feedback_id 

您还将拥有以下新路线:

/sections/:section_id/feedbacks/new 

这将允许您从url params中获得正确的部分,以便为其创建反馈。