2012-07-29 4 views
0

show.html.erb 파일의 탭/링크가 두 개있는 nav 메뉴가 있습니다. UsersController.rb에 탭으로 다른 부분을 렌더링하려면 ajax를 사용하고 싶습니다.템플릿 오류 - 레일의 아약스 3

show.html.erb에는 콘텐츠를 표시하려는 profile-data이라는 div가 있습니다. 그래서 나는 같은 것을 할 :

링크 구조 :

<li><%= link_to "College friends", college_friends_path, :remote => true %></li> <li><%= link_to "Highschool friends", highschool_friends_path, :remote => true %></li> 

내가 경로 정의 :

match "college_friends" => "users#college_friends", :as => "college_friends" 
match "highschool_friends" => "users#highschool_friends, :as => "highschool_friends" 

을 그리고 내 UserController.rb 필요한에게로 정의 방법 :

* college_friends.js.erb *

$('#profile-data').html("<%= escape_javascript(render(:partial => 'college_friends')) %>"); 

* highschool_friends.js.erb *

$('#profile-data').html("<%= escape_javascript(render(:partial => 'highschool_friends')) %>"); 

부분 코드 : 44,

마지막 것은 우리는 JS 파일이 : _college_friends.html.erb

Started GET "/universitet_friends" for 127.0.0.1 at 2012-07-29 01:53:39 +0200 
Processing by UsersController#universitet_friends as JS 
    Rendered users/_universitet_friends.html.erb (1.6ms) 
    Rendered users/universitet_friends.js.erb (3.1ms) 
Completed 500 Internal Server Error in 7ms 

ActionView::Template::Error (undefined method `friends' for nil:NilClass): 
    1: <% groups = @user.friends.group_by(&:college_name) %> 
    2: <% sorted_groups = groups.sort_by{|key, values| values.count}.reverse %> 
    3: <% sorted_groups.each do |collegename, friends| %> 
    4: <% next if collegename.blank? %> 
    app/views/users/_universitet_friends.html.erb:1:in `_app_views_users__universitet_friends_html_erb___1983680250475155079_70236040373720' 
    app/views/users/universitet_friends.js.erb:1:in `_app_views_users_universitet_friends_js_erb__1317362850668628869_70236044930260' 
    app/controllers/users_controller.rb:19:in `universitet_friends 

어떤 도움을 주시면 감사하겠습니다 : 나는이 링크를 클릭하고 콘솔에서이 오류를 얻을 때 1,363,210

<% groups = @user.friends.group_by(&:college_name) %> 
<% sorted_groups = groups.sort_by{|key, values| values.count}.reverse %> 
<% sorted_groups.each do |collegename, friends| %> 
<% next if collegename.blank? %> 
<div class="contentbox"> 
    <div class="box-header"> 
     <h3><%= collegename %></h3> 
     <div class="meta-info"> 
      <p><i class="icon-map-marker"></i> Malmö</p> 
      <p><i class="icon-user"></i><span class="count"> <%= friends.count %></span> vänner</p> 
     </div> 
    </div> 
    <ul class="friends-list"> 
     <% friends.map do |friend| %> 
     <li><%= image_tag(friend.image) %> 
      <% end %> 
     </ul> 
    </div> 
<% end %> 

아무런 반응이 없습니다.

답변

0

ActionView :: 템플릿 :: 오류 ( 전무에 대한 정의되지 않은 메서드`친구 'NilClass) :

이것은 당신의 @user 변수가 전무 있음을 말하고있다. 이것은 AJAX 요청을 위해 컨트롤러로 돌아 왔을 때 실제로 @user 변수를 설정하지 않았기 때문에 발생했습니다. 요청 간에는 지속되지 않습니다. Ajax 요청 중에 해당 변수를 전달해야한다. 이를 수행하는 한 가지 방법은 ajax URL에 user_id 매개 변수를 추가하는 것입니다.

+0

내 사례를 보여 주실 수 있습니까? – SHUMAcupcake

0

은이 같은 작업을 수행 할 수 있습니다 할 수 있음도

<%=link_to "Highschool friends", college_friends_path(:user_id => @user.id), :remote => true %>

의 "url..you이 링크를 아약스 요청을 해고 할 수 아약스하는 USER_ID의 PARAM을 통과하는 것입니다 그러나 가장 좋은 방법 - 클릭 "이벤트.