0

в нижнем коде, я пытаюсь нарисовать кучу диаграммы. У моей базы данных есть модель Person, у которой есть атрибут «имя, вес, высота, цвет, возраст» Итак, моя цель - нарисовать диаграмму для каждой строки с весом по оси x, по оси y , И цвет будет на самом деле цветом для каждого графика, например, у человека 1 есть желтый цвет, тогда диаграмма должна быть желтой (это очень сложно применить)рубин на рельсах рисунок провалился, но как получилось

Во всяком случае, я использую lazy_high_chart для реализации этого, но без везения, я потерпел неудачу без ошибок.

Но чтобы быть последовательным, вот мой код: people_controller.rb

class PeopleController < ApplicationController 
    #GET /people/index 
    #GET /people 
    def index 
     @people = Person.all 
    end 

    #GET /people/show/id 
    def show 
     @person = Person.find(params[:id]) 
    end 

    #GET /people/new 
    def new 
     @person = Person.new 
    end 

    #POST /people/update 
    def create 
     @person = Person.new(person_params) 
     @person.save 
     redirect_to :action => :index 
    end 

    #GET /people/edit/:id 
    def edit 
     @person = Person.find(params[:id]) 
    end 

    #POST /people/update/:id 
    def update 
     @person = Person.find(params[:id]) 
     @person.update(person_params) 
     redirect_to :action => :show, :id => @person 
    end 

    #GET /people/destroy/:id 
    def destroy 
     @person = Person.find(params[:id]) 
     @person.destroy 
     redirect_to :action => :index 
    end 

    def display 
     @people = Person.all 
     names = [] 
     weights = [] 
     heights = [] 
     colors = [] 
     ages = [] 
     @people.each do |x| 
      names = x.name 
      weights = x.weight 
      heights = x.height 
      colors = x.color 
     ages = x.age 
     end 

     @chart = LazyHighCharts::HighChart.new('graph') do |x| 
      x.title(:text => "Display Data") 
      x.xAxis(:categories => weights, :title => names, :margin => 10) 
      x.yAxis(:categories => heights) 
      x.series(:type => 'column', :name => 'showing data', :data => weights, :color => colors) 
     end 
    end 

    private 
    def person_params 
     params.require(:person).permit(:name, :weight, :height, :color, :age) 
    end 
end 

routes.rb

Rails.application.routes.draw do 
    root 'people#index' 
    match ':controller(/:action(/:id(.:format)))', :via => :all 
end 

index.html.erb:

<h1> People list</h1> 
<table> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th> Weight</th> 
      <th> Height</th> 
      <th> Color</th> 
      <th> Age</th> 
      <th colspan="4"></th> 
     </tr> 
    </thead> 
    <tbody> 
     <% @people.each do |e| %> 
     <tr> 
      <td><%= e.name %></td> 
      <td><%= e.weight %></td> 
      <td><%= e.height %></td> 
      <td><%= e.color %></td> 
      <td><%= e.age %></td> 
      <td><%= link_to 'Show', :controller => "people", :action => "show", :id => e %></td> 
      <td><%= link_to 'Edit', :controller => "people", :action => "edit", :id => e %></td> 
      <td><%= link_to 'Delete', :controller => "people", :action => "destroy", :id => e %></td> 
     </tr> 
     <% end %> 
    </tbody> 
</table> 
<br> 
<%= link_to 'New Input', :controller => 'people', :action => 'new' %> 
<%= link_to 'Display', :controller => "people", :action => "display" %> 

дисплей. html.erb:

<h1> Display Result</h1> 
<%= high_chart("display_res", @chart) %> 

Я считаю, что мои маршруты правильные, это должно быть дело с действием отображения в блоке кода контроллера. Я прочитал пример lazy_high_chart, но кажется слишком простым и не связанным с моим делом. Любые идеи? Большое спасибо

Да, это работает, но нет данных показано, как приходят ?? Журнал обновлен, кажется, данные извлекаются, но не отображаются

+0

Посмотрите в журнале: что на самом деле происходит? –

+0

только что обновил его с помощью журнала – ThugForever

ответ

1

У вас есть бесконечная переадресация./people/display перенаправляет на/people/display.

Удалить эту строку:

redirect_to :action => :display

Вы также перезапись массивы в своем @people.each цикле. Вместо = вы должны использовать << для добавления значений в каждом массиве:

names = [] 
    weights = [] 
    heights = [] 
    colors = [] 
    ages = [] 
    @people.each do |x| 
     names << x.name 
     weights << x.weight 
     heights << x.height 
     colors << x.color 
     ages << x.age 
    end 
+0

спасибо за помощь, теперь он работает, но данные не отображаются – ThugForever

+1

Вероятно, у вас есть новая информация в ваших журналах. Посмотрите, есть ли там какая-либо полезная информация. Удачи. – msergeant