我是一名正在开发RoR应用程序的初学者,该应用程序允许用户通过经验和教育更新他们的简历。我有两个模型用于这些不同的项目,并希望按时间顺序显示它们。我想知道如何在我的配置文件控制器和视图中进行设置。
我希望将相同的做法应用到应用程序的单独部分,该部分将以相同的方式组合用户的帖子和讨论项目。但是,目前,我的重点是经验和教育部分。
简档/ 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 :(得分: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
)。在遍历列表时,检查您拥有的对象类型。
希望这有帮助。
答案 1 :(得分: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 %>