0

Railsアプリで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がそれを見ることができません。エラーによると、railsが検索するファイル拡張子は、、、.hamlおよびだけです。そのリストに拡張機能もあるべきではありませんか?前もって感謝します。.coffee.erb.builder.rjs

4

2 に答える 2

2

あなたのファイルはと呼ばれるべきですvote.js.erb.rjsRailsは拡張機能を使用しません。

于 2012-06-20T19:37:55.573 に答える
1

.rjs拡張機能は元々RailsPrototypeJSライブラリに使用されていました。

デフォルトでRails 3.1は、ライブラリはJQueryに切り替えられました。

Railsプロジェクトで使用する場合.rjsは、JQueryの代わりにPrototypeを使用することを意味します。そのための宝石はプロトタイプレールです。

于 2012-06-20T19:45:36.813 に答える