0

私は Michael Hartl の本に従って、次の機能をアプリに追加しています。フォロー ボタンとフォロー解除ボタンで AJAX を使用しようとすると、レンダリングされるボタンを変更しようとすると、次のエラーが発生します。

Completed 500 Internal Server Error in 81ms

ActionView::MissingTemplate (Missing template users/follow_user, application/follow_user with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}. Searched in:
  * "/Users/hugo/Web Development/Rails/sample/app/views"
  * "/Users/hugo/.rvm/gems/ruby-1.9.2-p318/gems/kaminari-0.13.0/app/views"
  * "/Users/hugo/.rvm/gems/ruby-1.9.2-p318/gems/devise-2.0.4/app/views"
):
  app/controllers/users_controller.rb:73:in `follow_user'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core.rb:263:in `block in repository'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core/repository.rb:114:in `scope'
  lib/ct_gems/dm-core-1.2.0/lib/dm-core.rb:263:in `repository'


  Rendered /Users/hugo/.rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.2.3/lib/action_dispatch/middleware/templates/rescues/missing_template.erb within rescues/layout (0.5ms)

これは私のコントローラーのコードです:

def follow_user
    @other_user = User.get(params[:user_id].to_i)
    current_user.follow(@other_user)

    respond_to do |format|
      format.html {redirect_to user_profile_path(@other_user)}
      format.js
    end
  end

これは私のフォームです...フォームではなく、機能をたどるリンクです:

<% unless current_user == @user %>
  <div id="follow_form">
  <% if current_user.following?(@user) %>
    <%= render 'users/unfollow' %>
  <% else %>
    <%= render 'users/follow' %>
  <% end %>
  </div>
<% end %>

そして、これは私がレンダリングしようとしているパーシャルの1つです:

<%= link_to "Follow", user_follow_user_path(@user), :class => "btn btn-primary", :style => "margin-bottom:20px;", :remote => true %>

そして、これは右ボタンをレンダリングするためのファイルです。私はこのコードを私のマイケルの本に使用しています:

$("#follow_form").html("<%= escape_javascript(render('users/unfollow')) %>")

ただし、パーシャルが見つからないという上記のエラーが発生しています。誰かが私に理由を説明できますか? ありがとう

4

2 に答える 2

1

テンプレートをレンダリングしようとしていると言っています。これは、私の経験から、名前の前にアンダースコアがないビュー/フォルダー内のファイルです。ファイル名の先頭にアンダースコアを追加し、 render :partial => 'users/follow' を実行して、それが役立つかどうかを確認します

于 2012-10-22T16:24:02.407 に答える
0

私の悪い読み方、問題は私のjavascriptファイルの命名でした。その名前は、コントローラーのアクションと一致する必要があります。

于 2012-10-22T18:45:57.383 に答える