jak*_*ork 4 activerecord controller ruby-on-rails associations nested-attributes
我正在尝试在我的主页上显示评论列表,同时显示每个评论的评分.
我想要一个逗号分隔的每个评论附带的不同评级列表(基于相关的review_id); 评级是-5到5的整数.加载页面时我得到的是:
Review 1. #<ActiveRecord::Relation:0x007f9879749a50>
Review 2. #<ActiveRecord::Relation:0x007f9879749a50>
Review 3. #<ActiveRecord::Relation:0x007f9879749a50>
Review 4. #<ActiveRecord::Relation:0x007f9879749a50>
Review 5. #<ActiveRecord::Relation:0x007f9879749a50>
Run Code Online (Sandbox Code Playgroud)
当我想看到这个:
Review 1. 1, 5, 2, -3
Review 2. 2, -1
Review 3. 1, 1, 4, 5
Review 4. -5, -2, -3
Review 5. 1, 1, 3, 2, 1, 5, 3, 2
Run Code Online (Sandbox Code Playgroud)
用户模型:
class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :ratings_attributes, :reviews_attributes
  has_many :reviews, dependent: :destroy
  has_many :ratings, :through => :reviews, dependent: :destroy
  accepts_nested_attributes_for :ratings, allow_destroy: true
  accepts_nested_attributes_for :reviews, allow_destroy: true
end
Run Code Online (Sandbox Code Playgroud)
评论模型:
class Review < ActiveRecord::Base
  attr_accessible :content, :priority, :ratings_attributes
  belongs_to :user
  has_many :ratings
end
Run Code Online (Sandbox Code Playgroud)
评级模型:
class Rating < ActiveRecord::Base
  attr_accessible :rating_count, :review_id, :timestamp, :user_id
  belongs_to :user
  belongs_to :review
end
Run Code Online (Sandbox Code Playgroud)
家庭控制器:
class HomeController < ApplicationController
  def index
    @reviews = current_user.reviews.order("position")
    @ratings = Rating.where(params[:review_id])
    @ratings_list = Rating.find(:all)
  end
Run Code Online (Sandbox Code Playgroud)
index.html.erb
<h1>Listing reviews</h1>
<p id="notice"><%= notice %></p>
<br />
  <div class="span12">
<ul id="reviews" data-update-url="<%= sort_reviews_url %>">
    <% @reviews.each do |review| %>
        <%= content_tag_for :li, review do %>
            <span class="handle">[drag]</span>
            <%= link_to h(review.content), review %>
            <!-- this is where i want a comma separated list of the different ratings attached to each review; ratings are integers of -5 to 5. -->
            <%= @ratings %>
        <% end %>
    <% end %>
</ul>
<br />
  </div>
<!-- for debugging that i'm actually getting through to the ratings data -->
<%= @ratings_list %>
<br />
<%= link_to 'New Review', new_review_path %>
Run Code Online (Sandbox Code Playgroud)
对于我的生活,我无法弄清楚我是在控制器中做错了什么,还是在html中.
每个评论旁边显示的所有内容都是这样的:
#<ActiveRecord::Relation:0x007f987a9d7618>
Run Code Online (Sandbox Code Playgroud)
提前谢谢......如果你在乎,我在外面工作,一只虫子就飞了起来.
您可能正在渲染实际的审阅对象,而不是它们的字符串表示.这样的东西应该在视图中起作用:
<%= @ratings.map { |rating| rating.rating_count }.join(", ") %>
Run Code Online (Sandbox Code Playgroud)
这会将您的评级集合转换为rating_counts的集合,然后使用逗号连接它们.
虽然:)我无法帮助修复鼻子:)
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           1316 次  |  
        
|   最近记录:  |