ruby-on-rails – Rails:link_to with block和GET params?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails:link_to with block和GET params?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在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" %>

猜你在找的Ruby相关文章