Рендеринг другого файла Javascript в response_to - PullRequest
24 голосов
/ 22 августа 2010

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

respond_to do |format|
  format.js { render ??? }
end

Rails может отображать ванильный JavaScript с опцией: js, но Я не хочу использовать Javascript в контроллере .

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

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

Ответы [ 2 ]

45 голосов
/ 22 августа 2010

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

respond_to do |format|
  format.js { render :action => "different_action" }
end

вместо этого будет загружен RAILS_ROOT / app / views / ваш контроллер / different_action.js.erb.

Блок format.js просто гарантирует, что, если это запрос .js, у вас установлены правильные заголовки по умолчанию, и он ищет .js.erb или .js вместо .html.erb по умолчанию.

Вы также можете использовать render: file для рендеринга любого произвольного файла в файловой системе, в котором есть JS, или вы можете использовать любую из других обычных опций рендеринга. Их несколько .

7 голосов
/ 22 августа 2010

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

respond_to do |format|
  format.js
end

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...