2013-01-15 56 views
0

我是一名初學者,致力於RoR應用程序,該應用程序允許用戶通過經驗和教育更新他們的簡歷。我有兩個模型用於這些不同的項目,並希望按時間順序將它們一起顯示。我想知道如何在我的配置文件控制器和視圖中進行設置。將多個模型組合到1個視圖導軌中

我想採用這種相同的做法將應用程序的一個單獨的部分,將以相同的方式結合用戶的帖子和討論項目。但是,目前,我的重點是體驗和教育部分。

型材/ show.html.erb:

<% if @experiences.any? or @educations.any? %> 
<div class="postExpOuter"> 
    <% @experiences.each do |experience| %> 
      <div class="postExp"> 
       <div> 
        <h2><%= experience.position %></h2> 
        <h3><%= experience.company %> | <%= experience.location %></h3> 
        <h4> 
         <%= experience.start_month %> <%= experience.start_year %> 
         <% if experience.end_year %> 
          <%= " - " + experience.end_month %> <%= experience.end_year %> 
         <% else %> 
          <span> - Present</span> 
         <% end %> 
        </h4> 
       </div> 
      </div> 
    <% end %> 
    <% @educations.each do |education| %> 
      <div class="postExp"> 
       <div> 
        <h2><%= education.degree %></h2> 
        <h3><%= education.school %></h3> 
        <h4> 
         <% if education.end_year %> 
          <span>Class of </span><%= education.end_year %> 
         <% else %> 
          <%= education.start_year %><span> - Present</span> 
         <% end %> 
        </h4> 
       </div> 
      </div> 
    <% end %> 
</div> 
<% end %> 

回答

0

profiles_controller.rb:

class ProfilesController < ApplicationController 
    def show 
    @user = User.find_by_profile_name(params[:id]) 
    if @user 
     @posts = @user.posts.all(:order => "created_at DESC", :limit => 3) 
     @experiences = @user.experiences.all(:order => "start_year DESC") 
     @educations = @user.educations.all(:order => "start_year DESC") 

     @items = (@experiences.to_a + @educations.to_a).sort_by(&:start_year).reverse[0,3] 

     render action: :show 
    else 
     render file: 'public/404', status: 404, formats: [:html] 
    end 
    end 
end 

型材/ show.html.erb:

<% if @items.any? %> 
<div class="postExpOuter"> 
    <% @items.each do |item| %> 
     <% if item.is_a? Experience %> 
     <div class="postExp"> 
      <div> 
       <h2><%= item.position %></h2> 
       <h3><%= item.company %> | <%= item.location %></h3> 
       <h4> 
        <%= item.start_month %> <%= item.start_year %> 
        <% if item.end_year %> 
         <%= " - " + item.end_month %> <%= item.end_year %> 
        <% else %> 
         <span> - Present</span> 
        <% end %> 
       </h4> 
      </div> 
     </div> 
     <%- else -%> 
     <div class="postExp"> 
      <div> 
       <h2><%= item.degree %></h2> 
       <h3><%= item.school %></h3> 
       <h4> 
        <% if item.end_year %> 
         <span>Class of </span><%= item.end_year %> 
        <% else %> 
         <%= item.start_year %><span> - Present</span> 
        <% end %> 
       </h4> 
      </div> 
     </div> 
     <% end %> 
    <% end %> 
</div> 
<% end %> 
0

只是竊取了我的瀏覽器,不知道是否它直接:

<%- (@experiences.to_a + @educations.to_a).sort_by(&:end_year).each do |item| -%> 
    <%- if item.is_a? Experience -%> 

    your markup here... 

    <%- else -%> 

    your other markup here... 

    <%- end -%> 
<%- end -%> 

沒有因爲寫ERB ...呃,很久。基本上它只是以下內容:將2個ActiveRecord-Relations合併爲一個大陣列,按照您想要的時間戳進行排序(如果需要,您可以在末尾添加.reverse)。在遍歷列表時,檢查您擁有的對象的類型。

希望這會有所幫助。

+0

非常感謝!這工作得很好,但我如何將它正確地移動到配置文件控制器? – anater

+1

到目前爲止我想通了。我發佈了答案。再次感謝您的幫助! – anater

+0

沒問題。請標記答案是正確的;) – Hisako

相關問題