首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails局部未通过

Rails局部未通过
EN

Stack Overflow用户
提问于 2019-10-05 20:08:12
回答 1查看 126关注 0票数 1

对于primary_categoryblog,我有很多可能的选项。每个图标都有一个相关的图标,因此我在blogs/_category_icon.html.erb部分中使用了它们:

代码语言:javascript
复制
<% 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页面上,如下所示:

代码语言:javascript
复制
<%= render "blogs/category_icon", locals: { blog: @blog } %>

但是,当我试图在blogs#index页面上从<% @blogs.each do |blog| %>块中调用它时,它会弹出一个错误,上面写着undefined method 'primary_category' for nil:NilClass

blogs#index页面上的代码如下:

代码语言:javascript
复制
<% @blogs.each do |blog| %>
  ...
  <%= render "blogs/category_icon", locals: { blog: blog } %>
  ...
<% end %>

有人能明白为什么这个地方没有得到正确的传递吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-05 20:35:36

正如ActionView/PartialRenderer中所述,您需要使用partial选项:

代码语言:javascript
复制
<%= render partial: "blogs/category_icon", locals: { blog: blog } %>

注意,您还可以使用呈现一个部分集合的选项,但这次使用collectionas选项的组合:

代码语言:javascript
复制
<%= render partial: "blogs/category_icon", collection: @blogs, as: :blog %>

通过@blogs元素的迭代由Rails处理。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58251929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档