Подтвердить что ты не робот

Предоставление другого файла Javascript в response_to

Я застрял в (по-видимому) простой проблеме. В моем 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 в контроллере.

Есть ли у вас какие-либо предложения?

Спасибо, Алессандро Д.С.

4b9b3361

Ответ 1

Попробуйте render :template => 'your_file_here' вместо

respond_to do |format|
  format.js
end

Документация для render также описывает несколько других параметров.

Ответ 2

Если вы выполните:

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, или вы можете использовать любой из других обычных параметров. Есть несколько из них.