如何在 link_to 块声明中实现查询字符串和 URL 参数?现在,我有这个,它有效:

<%= link_to 'Edit', :edit, :type => 'book', :id => book %>

以上工作,并输出:
http://localhost:3000/books/edit/1?type=book

我想做的是这样的:
<% link_to :edit, :type => 'book', :id => book do %>
    ...
<% end %>

但是上面的格式输出:
http://localhost:3000/books/edit/

这不是我要找的...我希望它像前面的例子一样输出一个 URL。

我怎样才能做到这一点?

最佳答案

link_to 采用与 url_for 相同的选项。话虽如此,没有 :type 选项,它并不真正接受块,所以我猜你的第二个例子工作的原因是因为它位于 Book View 的范围内。正如 Tom 在对此答案的回复中提到的,将块传递给 link_to 可以用作第一个参数(链接文本)的替代。

如果 Book 是一种资源,您可以通过将 Rails 为您制作的方便、自动生成的资源路由之一传递给 link_to 助手来生成您要查找的 URL。在尝试之前运行 rake routes:

<%= link_to "Edit", edit_book_path(book) %>

否则,您可以明确说明要链接到的 Controller /操作:
<%= link_to "Edit", :controller => "books", :action => "edit", :id => book %>

快乐的黑客。

编辑: 几乎忘记了,您可以在声明要链接到的对象的 id 之后添加绕过它们的查询字符串。
<%= link_to "Edit", edit_book_path(book, :query1 => "value", :query2 => "value")

会产生 /books/1/edit?query1=value&query2=value 。或者:
<%= link_to "Edit", :controller => "books", :action => "edit", :id => book, :query1 => "value", :query2 => "value" %>

关于ruby-on-rails - Rails : link_to with block and GET params?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2711294/

10-10 09:43
查看更多