Rails не видит файл .rjs

Я пытаюсь научиться использовать AJAX в своих приложениях для рельсов, поэтому решил начать с чего-то простого. У меня есть приложение для блога, в котором пользователь может голосовать за любое сообщение в блоге. Вот мой код для posts#vote:

posts_controller.rb

class PostsController < ApplicationController
  (...)
  def vote
    post = Post.find(params[:id])

    if current_user.voted_on?(post)
      current_user.unvote_for(post)
    else
      current_user.vote_for(post)
    end

    respond_to do |format|
      format.html { redirect_to post_path(post) }
      format.js
    end
  end
end

а вот код ссылки для моего posts#view:

view.html.erb

<%= link_to "Vote", vote_post_path(post.id), :remote => true %>

И теперь, если я нажму на ссылку Vote, действие posts#vote сработает и голосование будет подано, однако я получаю сообщение об ошибке:

ActionView::MissingTemplate (отсутствуют сообщения/голосование шаблона, приложение/голосование с {:handlers=>[:haml, :coffee, :erb, :builder], :locale=>[:en], :formats=>[:js , :html]}.

У меня есть (пустой) файл vote.rjs в папке views/posts, но по какой-то причине рельсы его не видят. Согласно ошибке, единственными расширениями файлов, которые ищет rails, являются .haml, .coffee, .erb и .builder. Разве в этом списке не должно быть расширения .rjs? Заранее спасибо.


person mbajur    schedule 20.06.2012    source источник
comment
используйте прототип.js вместо jquery и установите прототип-рельсы, если вы хотите вернуть поддержку .rjs   -  person Viren    schedule 21.06.2012


Ответы (2)


Ваш файл должен называться vote.js.erb. Rails не использует расширение .rjs.

person meagar    schedule 20.06.2012

Расширение .rjs изначально использовалось для Rails и Prototype библиотеки JS.

С Rails 3.1 библиотека по умолчанию была переключена на JQuery.

Если вы хотите использовать .rjs в своем проекте Rails, это будет означать использование Prototype вместо JQuery. Жемчужиной для этого является prototype-rails.

person Azolo    schedule 20.06.2012