link_to
принимает те же параметры, что url_for
делает. Сказав это, нет опции :type
, и на самом деле она не принимает блоки, поэтому я предполагаю, что причина, по которой работает ваш второй пример, заключается в том, что она находится в пределах представления книги. Как было упомянуто в Tom в ответе на этот ответ, передача блока в link_to
может использоваться в качестве замены первого аргумента (текст ссылки).
Если книга является ресурсом, вы можете получить помощника link_to
, чтобы сгенерировать URL-адрес, который вы ищете, передав ему один из удобных автоматически генерируемых маршрутов ресурсов, созданных для вас. Запуск rake routes
, прежде чем попробовать это:
<%= link_to "Edit", edit_book_path(book) %>
В противном случае, вы можете явно указать, что контроллер/действие, которое вы хотите перейти по ссылке:
<%= link_to "Edit", :controller => "books", :action => "edit", :id => book %>
Happy взлому.
EDIT: Почти забыл, что вы можете добавить строки запроса в обход их после того, как вы объявите идентификатор объекта, к которому вы привязываетесь.
<%= 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" %>
Блок, кажется, способ захвата входа, чтобы поместить внутри ' тегов'. http://railsapi.com/doc/rails-v2.3.5/classes/ActionView/Helpers/UrlHelper.html#M002452 –