Rails方式:在一个控制器的显示页面上获取一个链接,并将其连接到另一个控制器的新页面

时间:2012-06-20 14:26:25

标签: ruby-on-rails ruby-on-rails-3

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

<% @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. 为什么嵌套路线对于这个例子来说是好主意还是坏主意?

1 个答案:

答案 0 :(得分: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