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" %>

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...