1

我有我的持有人(将其视为一个关系表,其中包含属于某个持有人的所有问题以及持有人特定数据(如姓名))显示页面问题列表和指向新问题链接的链接。

<% @questions.each do |question| %>
    <%= question.question %> 
    <%= question.answer %>
    <%= link_to "Edit Question", edit_question_path(question) %>
    <br />
<% end %>

<%= link_to "New Question", new_question_path %>

这样做的目的是在创建新问题时设置 holder_id。如果这很重要,我在模型中设置了 belongs_to 和 has_many。

我尝试了一些不同的方法,例如,<%= link_to "New Question", new_question_path(@holder) %>但这只是将格式设置为:@holder.id。我想,我可以滥用它来使它工作,但这是一个非常丑陋的黑客。

我听说人们过度使用嵌套路由,并且深度不超过 2 或 3。所以必须有一种方法可以在不使用嵌套路由的情况下做到这一点。

  1. 我是否正确,因为有一种方法可以在不使用嵌套路由的情况下做到这一点?它是什么?
  2. 为什么嵌套路由对于这个例子来说是个好主意或坏主意?
4

1 回答 1

2

我想你可以做这样的事情。
在您指向新的链接中:

<%= link_to "New Question", new_question_path(:holder_id => @holder.id)

此链接将使您的请求将holder_id作为参数发送到question_controller.rb中的操作。所以你可以像这样使用它:

def new
  holder_id = params[:holder_id]
  # Do something with this id
  # ...
end
于 2012-06-20T14:31:02.483 回答