link_to
принимает те же параметры, что и url_for
. Сказав это, опция :type
не существует, и она на самом деле не принимает блоки, поэтому я предполагаю, что причина, по которой работает ваш второй пример, заключается в том, что он находится в области просмотра книги. Как отмечал Том в ответе на этот ответ, передача блока в link_to
может использоваться в качестве замены для первого аргумента (текст ссылки).
Если Book является ресурсом, вы можете получить помощник link_to
для генерации искомого URL-адреса, передав ему один из удобных, автоматически сгенерированных маршрутов маршрутов ресурсов, которые вы можете найти. Запустите rake routes
, прежде чем попробовать это:
<%= 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")
Будет продукт /books/1/edit?query1=value&query2=value
. В качестве альтернативы:
<%= link_to "Edit", :controller => "books", :action => "edit", :id => book, :query1 => "value", :query2 => "value" %>