2012-10-22 76 views
0

我正在關注Michael Hartl的書,將一些以下功能添加到我的應用中,並且當我嘗試在我的follow和unfollow按鈕上使用AJAX時,我在嘗試更改按鈕時收到這些錯誤渲染:部分未被發現Rails

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 %> 

這是我試圖渲染諧音之一:

<%= 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')) %>") 

但是我得到上面的錯誤,我的部分沒有找到;任何人都可以向我解釋爲什麼?謝謝

回答

0

對我而言,閱讀不好,問題在於我的JavaScript文件的命名。該名稱必須與您的控制器操作相匹配。

1

這是說它試圖呈現一個模板,根據我的經驗,它是視圖/文件夾中沒有下劃線名稱前面的文件。將下劃線添加到文件名的開頭,並進行渲染:partial =>'users/follow',看看是否有幫助