如何在link_to块声明中实现查询字符串和URL参数?现在,我有这个,它有效:
<%= link_to 'Edit',:edit,:type => 'book',:id => book %>
以上工作和输出:
http://localhost:3000/books/edit/1?type=book
我想做的是这样的:
<% link_to :edit,:id => book do %> ... <% end %>
但以上格式输出:
http://localhost:3000/books/edit/
这不是我正在寻找的…我希望它输出像前面的例子一样的URL.
我怎样才能做到这一点?
解决方法
link_to
采用与
url_for
相同的选项.话虽如此,没有:type选项,它并不真正接受块,所以我的猜测是你的第二个例子工作的原因是因为它位于Book视图的范围内.正如
Tom在回答此答案时所提到的,将块传递给link_to可以用作第一个参数(链接文本)的替代.
如果Book是一个资源,您可以通过传递一个方便的,自动生成的资源路由来获取link_to帮助程序来生成您正在寻找的URL.在尝试此操作之前运行rake路由:
<%= link_to "Edit",edit_book_path(book) %>
否则,您可以明确说明要链接到的控制器/操作:
<%= link_to "Edit",:controller => "books",:action => "edit",:id => book %>
快乐的黑客.
编辑:几乎忘记了,你可以在声明你要链接的对象的id之后添加绕过它们的查询字符串.
<%= link_to "Edit",edit_book_path(book,:query1 => "value",:query2 => "value")
产品/书籍/ 1 /编辑?query1 = value& query2 = value.或者:
<%= link_to "Edit",:id => book,:query2 => "value" %>