0

我对以下几行感到困惑:

    <td><%= link_to 'Show', book %></td>
    <td><%= link_to 'Edit', edit_book_path(book) %></td>
    <td><%= link_to 'Remove', book, :confirm => 'Are you sure?', :method => :delete %></td>

http://guides.rubyonrails.org/layouts_and_rendering.html

'edit_book_path(book)' 是什么定义的?你能解释一下这意味着什么吗?它是否在传入变量 book 时查看控制器“ book ”并检查控制器方法“edit”?

是什么<%= link_to 'Show', book %>?是否转到控制器方法“显示”?还是显示“显示”?'book' 是传递的变量吗?

4

2 回答 2

3

路径由 ruby​​ 的路由生成。您可以通过运行获取应用程序中可用的路线列表rake routes,这将解析您的config/routes.rb文件并为您提供路线列表及其各自的路径。该命令的输出应包括 edit_book_path,它可能由文件resources :books中的一行生成config/routes.rb

于 2013-02-15T07:28:37.617 回答
1
1) <%= link_to 'Show', book %>
    # => <a href="/resource/show/1">Show</a>

这意味着要显示Show的是链接和该链接的路径book。因此,如果您单击Show,将显示相应的书籍。

这里 book 的 id 为 1。所以你说显示了 id = 1 的书。

例子:

link_to "Profile", :controller => "profiles", :action => "show", :id => @profile
# => <a href="/profiles/show/1">Profile</a>

相似地,

link_to "Profiles", profiles_path
# => <a href="/profiles">Profiles</a>

上面的链接将Profiles作为链接和路径profiles作为其路径。

2) <td><%= link_to 'Edit', edit_book_path(book) %></td>
            #=> <a href="/book/1/edit">Edit</a>

这意味着这Edit是链接,该链接的路径是book要编辑的。因此,如果您单击Edit,将显示相应的书籍页面进行编辑。

3) <td><%= link_to 'Remove', book, :confirm => 'Are you sure?', :method => :delete  %></td>
    #=> <a href=book rel="nofollow" data-method="delete" data-confirm="Are you sure?">Remove</a>

这意味着要删除Remove该链接的链接和路径。book因此,如果您单击Remove,相应的书页将被删除并且不会显示在视图中。

于 2013-02-15T08:27:08.607 回答