ruby-on-rails - rails : link_to with block and GET params?

标签 ruby-on-rails activerecord actionview

如何在 link_to block 声明中实现查询字符串和 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 选项,并且它并不真正接受 block ,所以我的猜测是你的第二个示例起作用的原因是因为它位于 a 的范围内图书 View 。 正如 Tom 所提到的在对此答案的回复中,将 block 传递给 link_to 可以用作第一个参数(链接文本)的替换。

如果 Book 是一种资源,您可以通过向 link_to 帮助程序传递 Rails 为您提供的方便的自动生成资源路由之一来生成您要查找的 URL。在尝试此操作之前运行rake paths:

<%= 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/

相关文章:

ruby-on-rails - Rspec 规范失败——未定义方法 `permissions' 用于 RSpec::ExampleGroups::UserPolicy:Class (NoMethodError)

ruby-on-rails - before_save , before_validation :on => :save

sql-server - 是否可以在 Rails ActiveRecord 迁移中指定 SQL Server 架构名称?

ruby-on-rails - 将 block 传递给 rails3 中的标签助手

html - 如何在常规 Ruby 代码(非 Rails)中使用 strip_tags?

ruby-on-rails - 引用列名称

ruby-on-rails - 安装 Oh My ZSH 后 Rails 不见了?

ruby-on-rails - 作为可标记行为在数据库中创建重复的行

ruby-on-rails - 如何在 ActiveRecord 中从使用一个外键迁移到另一个外键?

ruby-on-rails - 获取未定义的方法 content_for()