Ответ 1
Попробуйте render :template => 'your_file_here'
вместо
respond_to do |format|
format.js
end
Документация для render
также описывает несколько других параметров.
Я застрял в (по-видимому) простой проблеме. В моем 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 call, "i_like_it.js.erb" будет возвращен как script, и это будет выполненных в браузере.)
Я бы хотел сделать файл Javascript с другим именем (не i_like_it.js.erb), но я не нашел никакой опции в Rails API документы.
respond_to do |format|
format.js { render ??? }
end
Rails может отображать ванильный JavaScript с помощью опции js, но я не хочу используйте Javascript в контроллере.
Есть ли у вас какие-либо предложения?
Спасибо, Алессандро Д.С.
Попробуйте 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, или вы можете использовать любой из других обычных параметров. Есть несколько из них.