Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 不同的控制器和方法_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 不同的控制器和方法

Ruby on rails 3 不同的控制器和方法,ruby-on-rails-3,Ruby On Rails 3,我是个初学者,有些东西我有点困惑 我有一个网站,类似于Metacritic的电视节目,我的两个表格是节目和评论 这是我的节目(如电视节目)控制器 def show @show = Show.find(params[:id]) @reviews = @show.reviews.paginate(page: params[:page]) @ratings = @show.reviews.average("rating") respond_to do |form

我是个初学者,有些东西我有点困惑

我有一个网站,类似于Metacritic的电视节目,我的两个表格是节目和评论

这是我的节目(如电视节目)控制器

  def show
    @show = Show.find(params[:id])
    @reviews = @show.reviews.paginate(page: params[:page])
    @ratings = @show.reviews.average("rating")


    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @show }

    end
  end
还有我的观点

<p id="notice"><%= notice %></p>


<div class="row">
  <aside class="span4">
    <section>
      <h1>
<p>
  <%= @show.name %> (  <%= @show.year %>
)
</p>


<p>
  <b>Synopsys:</b>
  <%= @show.synopsys %>
</p>
<p>
  <b>Note:</b>
  <%= @ratings %>
</p>
<%= image_tag @show.avatar.url %>

      </h1>

    </section>
    <section>
    </section>
  </aside>

<div class="span8">
<% if @show.reviews.any? %>
<h3>Reviews (<%= @show.reviews.count %>)</h3>


<ol class="reviews">
<% @reviews.each do |review| %>

   <%= review.content %> <br> <%= review.source %> | <b><%= review.rating %> </b><br><br>
<br><br>
<% end %>
</ol>

<%= will_paginate @reviews %>

( )

概要:

注:

评论()
|



现在,我正在尝试在我的主视图(controller home)上执行类似的操作。我想把所有的节目都添加到数据库中,以及它们的整体收视率。问题是,当我将show controller的内容复制到home controller时,review没有定义,我不明白为什么。 有人能帮忙吗

class HomeController < ApplicationController
  def index
    @shows = Show.all
    @ratings = @show.reviews.average("rating")

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @show }

    end

      def about
    end


      def contact
    end
  end
  end
class HomeController
在我的家中,我想添加所有的节目及其总体评分,这样我就可以简单地执行show.name show content show.rating,但家庭控制器似乎不像其他控制器那样理解表的关系。您的家庭控制器是网站的根路由到的吗?如果是这样,将
root:to=>“shows#index”
放在routes.rb中可能会更干净(代码重复更少)——ShowController应该处理节目,而不是homecontroller这是一个很好的观点,谢谢。你能解释一下为什么homecontroller不响应评论吗?我添加了home controller,我想称之为show.name show.year(这些功能)和评级(没有),是因为
评级
是一个节目的评论属性,而不是一个节目?如果是这样,您需要执行
show.review.rating
。不过,这很难回答这不管用,也没什么用。