我正在阅读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().此外,为什么"编辑故障单"需要和:编辑符号,而"删除故障单"不需要:销毁符号.
谢谢,迈克
从包含两个资源的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路由
| 归档时间: |
|
| 查看次数: |
2757 次 |
| 最近记录: |