Я застрял в (по-видимому) простой проблеме. В моем event_controller у меня есть действие i_like_it:
def i_like_it
@event = Event.find(params[:id])
... # logic
respond_to do |format|
format.js
end
end
В моем случае «i_like_it» вызывается с помощью: method => PUT (это Ajax вызов "i_like_it.js.erb" будет возвращен в виде скрипта и будет выполняется в браузере.)
Я хотел бы отобразить файл Javascript с другим именем (не i_like_it.js.erb), но я не нашел никакой опции в Rails API docs.
respond_to do |format|
format.js { render ??? }
end
Rails может рендерить vanilla JavaScript с опцией: js, но я не хочу используйте Javascript в контроллере .
У вас есть какие-либо предложения?
Спасибо, Alessandro DS
Попробуйте render :template => 'your_file_here'
вместо
respond_to do |format|
format.js
end
Документация для render
описывает и пару других вариантов.
Если вы сделаете:
respond_to do |format|
format.js { render :action => "different_action" }
end
, вместо этого загрузится RAILS_ROOT / app / views / your-controller /different_action.js.erb.
Блок format.js просто гарантирует, что если это запрос .js, у вас есть правильные заголовки, установленные по умолчанию, и он ищет .js.erb или .js вместо .html.erb по умолчанию.
Вы также можете использовать render: file для рендеринга любого произвольного файла в файловой системе, в котором есть JS, или вы можете использовать любые другие обычные опции рендеринга. Их немного .