Переменная Perl по умолчанию $ _

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

24
задан Alessandro DS 21 August 2010 в 21:36
поделиться

2 ответа

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

respond_to do |format|
  format.js
end

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

7
ответ дан 28 November 2019 в 23:07
поделиться

Если вы сделаете:

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

45
ответ дан 28 November 2019 в 23:07
поделиться
Другие вопросы по тегам:

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