2017-01-11 3 views
0

Я нашел этот код в модуле AdminHelper приложения, над которым я сейчас работаю, и трудно понять, что именно происходит, и почему оно работает.Rails: Combine link_to with #send для динамического создания ссылки

link_to item_type, send("admin_#{item_type.underscore}_path", item_type)

(item_type содержит имя модели, в основном, «Order»)

Попытка получить ключ, заменив его на консоли не работает, но бросил ошибки. Но код работает нормально.

Кто-нибудь будет так любезным объяснить?

ответ

0

Вы получаете ошибки в консоли rails, потому что url_helpers не включены. Вы можете включить его urself

include Rails.application.routes.url_helpers 

затем

send("admin_#{item_type.underscore}_path", item_type) 

должны работать, как ожидается, это консоль

+0

Спасибо, совершенно забыл, что я попробовал его в немного спешит. Но главный вопрос заключался не в том, почему он не работал в консоли, а в том, как этот код создает правильную ссылку. – Flip

+0

просто потому, что помощники не включены в консоль rails по умолчанию. btw u мог получить к ним доступ через методы приложения и помощника, а также app.root_path или helper.link_to и т. д. Я не знаю, почему не включать их в консоль, хотя –

Смежные вопросы