如何在 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/