2011-10-22 88 views
1

我從來沒有編程過,並且難以讓link_to在我的Rails 3應用程序內的用戶配置文件中呈現相應的:partial。所有的一切有三個諧音:Rails 3 link_to部分與for循環內

  1. _profile_credits(我專注於_profile_credits對這個問題的緣故
  2. _profile_about
  3. _profile_reviews

我想什麼請點擊以下鏈接:

<li><%= link_to "Credits", profile_credits_profile_path(:id => @profile.id), :remote => true %></li> 

,並具有以下部分(_profile_credits)負載和@ user.credits呈現每個信用:

<% for credit in @user.credits %> 
    <div class="credit"> 
    </div> 
<% end %> 

當我試圖渲染部分是鏈接下方,在div容器內。下面的HTML顯示專區內的鏈接的位置和我想從諧音來負載信息:

<div id="tabs"> 
    <ul id="infoContainer"> 
    <li><%= link_to "Reviews", profile_reviews_profile_path(:id => @profile.id), :remote => true %></li> 
    <li><%= link_to "About", profile_about_profile_path(:id => @profile.id), :remote => true %></li> 
    <li><%= link_to "Credits", profile_credits_profile_path(:id => @profile.id), :remote => true %></li> 
    </ul> 
    <div id="tabs-1"> 
    ##load information from the partials inside `<div id="tabs-1"> 
    </div> 
</div><!-- end tabs --> 

和我的代碼的其餘部分...

profiles_controller#profile_credits行動:

def profile_credits 
    respond_to do |format| 
    format.js { render :layout => false } 
    end 
end 

在我routes.rb

resources :profiles do 
    get :profile_credits, :on => :member 
end 

profile_credits.js.erb

$("#tabs").html("<%= escape_javascript(render (:partial => "profile_credits", :locals => { :id => @profile.id })) %>"); 

目前沒有任何反應,當我點擊一個鏈接。我試過了各種Rails 3 UJS的例子,但無法得到它。在一個點上,我在ProfilesController profile_credits操作中指定了更多。但是,如果我在其他人的個人資料中加載了我的點數,而不是我瀏覽的個人資料的點數。任何人都可以幫我解決這個問題嗎?

+2

既然你說你從來沒有編程過,我會提出來。不要將任意變量名用於任何其他非常簡單的目的(例如''作爲迭代器)。部分原因尚未得到解答很可能是因爲任何人都很難猜測給定的命名爲'a'的命令和命名爲'c'的命令。這些是什麼? – numbers1311407

+1

哎呀,他們是學分。我爲了保持我的URL更短而命名,但可能不應該讓我指出我如何命名控制器操作和部分。 – tvalent2

+0

我已將完整的動作名稱放入以供參考。謝謝你的提示。 – tvalent2

回答

0

我終於得到了這個工作。給定一個<div>包含<ul>導航和加載的內容<div>,這裏是我的代碼:

HTML我的容器:

<div id="tabs"> 
    <ul id="infoContainer"> 
    <li><%= link_to "Reviews", profile_reviews_profile_path, :remote => true %></li> 
    <li><%= link_to "About", profile_about_profile_path, :remote => true %></li> 
    <li><%= link_to "Credits", profile_credits_profile_path, :remote => true %></li> 
    </ul> 
    <div id="tabs-1"> 
    <%= render :partial 'profile_reviews %> #default 
    </div> 
</div><!-- end tabs --> 

_profile_credits.html.erb部分:

<% for credit in @user.credits %> 
    <div class="credit"> 
    </div> 
<% end %> 

profile_credits.js.erb

$("#tabs-1").html("<%= escape_javascript(render (:partial => "profile_credits")) %>"); 

profile_credits.rb控制器:

def profile_credits 
    @profile = Profile.find(params[:id]) 
    @user = User.find(@profile.user_id) 
    @credits = User.find(@profile.id).credits 
    respond_to do |format| 
    format.html { render :layout => nil } 
    format.xml 
    format.js { render :layout => nil } 
    end 
end 

這做到了。