Ruby on Rails 初心者です。
今月になってから、既存のデータをグラフを描画するのに七転八倒しています。
この、teratail で、教えて頂いたことを頼りに、ようやく既存モデルの描画まではできました。
しかし、それは、モデル名.all で、期間の最初から最後まででなんか動的な感じがしません。
モデル名は、Admin::Chart です。
そこで、今日から1ヵ月、3ヵ月、6ヵ月、1年、2年、3年、5年、10年、と期間を指定して
表示させたいのですが、最後の最後(?)変数の受け渡し方が、わかりません。教科書やネットでは、
form_for というモデルと関連したメソッドの説明は多いのですが、今回使うform_tagメソッドの
説明は、やたら難しくて手に負えないか、短すぎて当てはまらないのです。。教えてください。
よろしくお願い致します。
いま、編集しているファイルは、homes/show.html.erb と homes_controller.rb です。
homes/show.html.erb には、
<%= form_tag do %>
<label><%= radio_button_tag :@term, 1 %>1ヶ月</label>
<label><%= radio_button_tag :@term, 3 %>3ヶ月</label>
<label><%= radio_button_tag :@term, 6 %>6ヶ月</label>
<label><%= radio_button_tag :@term, 12 %>1年</label>
<label><%= radio_button_tag :@term, 24 %>2年</label>
<label><%= radio_button_tag :@term, 36 %>3年</label>
<label><%= radio_button_tag :@term, 60 %>5年</label>
<label><%= radio_button_tag :@term, 120, {:checked => true} %>10年</label>
<%= submit_tag "グラフ表示" %>
<% end %>
<%= line_chart @graph_data3 %>
homes_controller.rb には、
def show
@admin_charts = Admin::Chart.all @smomoarray = Admin::Chart.where(keisaiday: (Time.now - 12.month)..Time.now).where('smomo is not 0').pluck(:keisaiday, :smomo) @smunearray = Admin::Chart.where(keisaiday: (Time.now - 12.month)..Time.now).where('smune is not 0').pluck(:keisaiday, :smune) @stotaiarray = Admin::Chart.where(keisaiday: (Time.now - 12.month)..Time.now).where('stotai is not 0').pluck(:keisaiday, :stotai) @graph_data3 = [ {"name"=>"もも肉", "data"=> @smomoarray }, {"name"=>"むね肉", "data"=> @smunearray }, {"name"=>"とたい", "data"=> @stotaiarray } ]
end
と、入力されています。今のこの状態ではグラフは表示されていてうまく動いているようです。
また、12.month のところの 12 を 24 にしたり、60 にしたりしてもうまく動いています。
ここで、このラジオボタンの変数@term を、(Time.now - 12.month)..Time.now) の
12 の所に入るようにしたいので、@term と書き換えると、
NoMethodError in HomesController#show
undefined method `month' for nil:NilClass という、エラーで進まなくなって
しまいました。今日一日かけて探しましたが、解決方法はわかりませんでした。
どなたか教えていただけますでしょうか。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/17 23:08
2016/08/18 06:20
2016/08/18 06:35