Направляющие: link_to с блоком и ПОЛУЧАЮТ параметрические усилители?

Как я могу достигнуть строки запроса и параметров URL в a link_to объявление блока? Прямо сейчас у меня есть это, которое работает:

<%= 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 как предыдущий пример.

Как я могу достигнуть этого?

7
задан ground5hark 26 April 2010 в 05:42
поделиться

4 ответа

Попробуйте Follwing

<% link_to(:edit, :type => 'book', :id => book) do %>
    ...
<% end %>

или для получения того же URL-адреса Используйте

<% link_to(:action=>'edit', :type => 'book', :id => book) do %>
    ...
<% end %>
0
ответ дан 6 December 2019 в 19:34
поделиться

Ruby не знает, отправляете ли вы блок do ... end в link_to или book , и отправляет его на ] книга , потому что она ближе к блоку. book do ... end возвращает nil , поэтому у вас остается link_to: edit,: type => 'book',: id => nil . Вам нужно будет заключить параметры в скобки, и пока вы это делаете, я бы переписал их, чтобы они были более понятными, с настройкой контроллера, действия и идентификатора: link_to {: controller => "books",: action => "edit",: id => book} do ... end

0
ответ дан 6 December 2019 в 19:34
поделиться

в файле mime_types.rb добавить:

Mime :: Type.register "text / application",: book

0
ответ дан 6 December 2019 в 19:34
поделиться

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

Удачного взлома.

РЕДАКТИРОВАТЬ: Чуть не забыл, вы МОЖЕТЕ добавлять строки запроса, минуя их, ПОСЛЕ объявления идентификатора объекта, на который вы ссылаетесь.

<%= 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" %>
13
ответ дан 6 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: