将数组传入form_for()和link_to()

mai*_*aik 4 ruby-on-rails

我正在阅读Rails 3 In Action.这本书建立了一类项目has_many :tickets和一类门票belongs_to :project.routes.rb文件如下所示:

    resources :projects do
      resources :tickets
    end
Run Code Online (Sandbox Code Playgroud)

现在,创建票证的表单采用如下数组:

    <%= form_for [@project, @ticket] do |f| %>
Run Code Online (Sandbox Code Playgroud)

在票证show.html.erb页面上有链接,如下所示:

    <%= link_to "Edit Ticket", [:edit, @project, @ticket] %>
    <%= link_to "Delete Ticket", [@project, @ticket], :method => :delete,
    :confirm => "Are you sure you want to delete this ticket?" %>
Run Code Online (Sandbox Code Playgroud)

现在我很困惑为什么需要将两个对象的数组传递给form_for()和link_to().此外,为什么"编辑故障单"需要和:编辑符号,而"删除故障单"不需要:销毁符号.

谢谢,迈克

Tob*_*hen 6

从包含两个资源的ID的URL嵌套资源路由,在这种情况下类似于:/projects/1/tickets/10.要生成此URL,我们需要知道项目和票证的ID,因此需要传入这两个对象.

编辑URL更进一步,并添加了一个操作关键字 - /projects/1/tickets/10/edit所以我们再次需要传递此操作.

但是,Rails中的RESTful销毁路由使用HTTP方法DELETE而不是action关键字,因此用于销毁票证的URL确实是/projects/1/tickets/10; 只是使用DELETE请求而不是GET.

有关更多信息,我建议您从Outside In中读取Rails路由