Rails:link_to与块和GET参数?

gro*_*ark 7 activerecord ruby-on-rails actionview

如何在link_to块声明中实现查询字符串和URL参数?现在,我有这个,它有效:

<%= link_to 'Edit', :edit, :type => 'book', :id => book %>
Run Code Online (Sandbox Code Playgroud)

以上工作和输出:

http://localhost:3000/books/edit/1?type=book
Run Code Online (Sandbox Code Playgroud)

我想做的是这样的:

<% link_to :edit, :type => 'book', :id => book do %>
    ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

但以上格式输出:

http://localhost:3000/books/edit/
Run Code Online (Sandbox Code Playgroud)

这不是我正在寻找的...我希望它输出像前面的例子一样的URL.

我怎样才能做到这一点?

Dam*_*son 13

link_to采取相同的选择url_for.话虽如此,没有:type选项,它并不真正接受块,所以我的猜测是你的第二个例子工作的原因是因为它位于Book视图的范围内.正如Tom在回答这个答案时提到的那样,传递一个块link_to可以用作第一个参数(链接文本)的替代.

如果Book是一个资源,您可以link_to通过传递一个方便的,自动生成的资源路由为您提供帮助来生成您正在寻找的URL.rake routes在尝试此操作之前运行:

<%= link_to "Edit", edit_book_path(book) %>
Run Code Online (Sandbox Code Playgroud)

否则,您可以明确说明要链接到的控制器/操作:

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book %>
Run Code Online (Sandbox Code Playgroud)

快乐的黑客.

编辑:几乎忘记了,你可以在声明你要链接的对象的id之后添加绕过它们的查询字符串.

<%= link_to "Edit", edit_book_path(book, :query1 => "value", :query2 => "value")
Run Code Online (Sandbox Code Playgroud)

会产品/books/1/edit?query1=value&query2=value.或者:

<%= link_to "Edit", :controller => "books", :action => "edit", :id => book, :query1 => "value", :query2 => "value" %>
Run Code Online (Sandbox Code Playgroud)


Sal*_*lil 0

尝试以下

<% link_to(:edit, :type => 'book', :id => book) do %>
    ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

或实现相同的 url 使用

<% link_to(:action=>'edit', :type => 'book', :id => book) do %>
    ...
<% end %>
Run Code Online (Sandbox Code Playgroud)