如何在 link_to
block 声明中实现查询字符串和 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
相同的选项做。 话虽如此,没有 正如 Tom 所提到的在对此答案的回复中,将 block 传递给 :type
选项,并且它并不真正接受 block ,所以我的猜测是你的第二个示例起作用的原因是因为它位于 a 的范围内图书 View 。link_to
可以用作第一个参数(链接文本)的替换。
如果 Book 是一种资源,您可以通过向 link_to
帮助程序传递 Rails 为您提供的方便的自动生成资源路由之一来生成您要查找的 URL。在尝试此操作之前运行rake paths
:
<%= 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/