对于primary_category的blog,我有很多可能的选项。每个图标都有一个相关的图标,因此我在blogs/_category_icon.html.erb部分中使用了它们:
<% case @blog.primary_category
when "General" %>
<%= link_to blogs_path, class: "text-slate" do %>
<i class="fas fa-book-open pr-2"></i> <%= @blog.primary_category %>
<% end %>
<% when "Motivation" %>
<%= link_to page_path("motivation"), class: "text-slate" do %>
<i class="fas fa-mountain pr-2"></i> <%= @blog.primary_category %>
<% end %>
<% when "Mindset" %>
<%= link_to page_path("mindset"), class: "text-slate" do %>
<i class="fas fa-brain pr-2"></i> <%= @blog.primary_category %>
<% end %>
<% when "Resourcing" %>
<%= link_to page_path("resourcing"), class: "text-slate" do %>
<i class="fas fa-first-aid pr-2"></i> <%= @blog.primary_category %>
<% end %>
<% when "Planning" %>
<%= link_to page_path("planning"), class: "text-slate" do %>
<i class="fas fa-sitemap pr-2"></i> <%= @blog.primary_category %>
<% end %>
<% when "Time Management" %>
<%= link_to page_path("time-management"), class: "text-slate" do %>
<i class="fas fa-stopwatch pr-2"></i> <%= @blog.primary_category %>
<% end %>
<% when "Discipline" %>
<%= link_to page_path("discipline"), class: "text-slate" do %>
<i class="fas fa-cookie-bite pr-2"></i> <%= @blog.primary_category %>
<% end %>
<% end %>它完美地呈现在我的blog#show页面上,如下所示:
<%= render "blogs/category_icon", locals: { blog: @blog } %>但是,当我试图在blogs#index页面上从<% @blogs.each do |blog| %>块中调用它时,它会弹出一个错误,上面写着undefined method 'primary_category' for nil:NilClass。
blogs#index页面上的代码如下:
<% @blogs.each do |blog| %>
...
<%= render "blogs/category_icon", locals: { blog: blog } %>
...
<% end %>有人能明白为什么这个地方没有得到正确的传递吗?
发布于 2019-10-05 20:35:36
正如ActionView/PartialRenderer中所述,您需要使用partial选项:
<%= render partial: "blogs/category_icon", locals: { blog: blog } %>注意,您还可以使用呈现一个部分集合的选项,但这次使用collection和as选项的组合:
<%= render partial: "blogs/category_icon", collection: @blogs, as: :blog %>通过@blogs元素的迭代由Rails处理。
https://stackoverflow.com/questions/58251929
复制相似问题