Rails关联在控制台中工作,但在视图中不起作用

时间:2015-12-20 03:02:00

标签: ruby-on-rails ruby ruby-on-rails-4

2个模块之间的多对多关联。它在控制台中完美运行,但在视图中,我得到的对象引用如下所示:

#<Author:0x0000000434bf80>
#<Author:0x000000043485b0>

这显示在我的视图中,其中包含以下代码:

<h1 class="page-title">Articles</h1>
<hr>

<div class="category-container">
    <ul  class="category-titles">
      <% @cat.each do |c| %> 
       <li><%= link_to c.catName, category_path(c) %></li>
      <% end %>
  </ul>
</div>
<br><br><br><hr>

<% @art.each do |t| %>
 <p class="articles-list-page"><%= link_to t.artTitle, article_path(t)  %></p>
 <p><%= t.author %></p>
<% end %>

以下是我在作者模型中的关联

class Author < ActiveRecord::Base
 has_many :articles
end

这是我在文章模型中的关联

 class Article < ActiveRecord::Base
    belongs_to :category
    belongs_to :author
 end

我无法理解为什么它在控制台中运行良好但在视图中不运行

1 个答案:

答案 0 :(得分:0)

您应该将作者属性委托给Article模型

class Article < ActiveRecord::Base
  belongs_to :category
  belongs_to :author
  delegates :authName, allow_nil: true
end

同样在您的控制器中使用以下代码

class ArticleController < ApplicationController
  def index
    @art = Article.includes(:author).all
  end
end

在你的观点中使用像bellow

<% @art.each do |t| %>
 <p class="articles-list-page"><%= link_to t.artTitle, article_path(t)  %></p>
 <p><%= t.authName %></p>
<% end %>