質問: 0 while i < 10 do puts point[i].to_i end #pointを文字列から数値に変換する #数値を合算する #合算した数値に合わせて文を表示する end end ``` ちなみに、HTMLはこちらです。 ``` 当てはまる項目にチェックするだけでOK!そしたら自分が次にどう行動するのがいいのか手に取るように分かるよ! では、質問START! <%= form_tag( { :controller => "mitibiki", :action => "index"}, { :methos => :get, :id => "fm" } ) do |f| %> <%= check_box_tag :point, :value => "5" %>途上国スタディツアーに参加したことがある <%= check_box_tag :point, :value => "2" %>国際協力に興味があるほうだと思う <%= check_box_tag :point, :value => "5" %>口座引き落とし制の寄付を登録している <%= check_box_tag :point, :value => "3" %>国際NGOの名前を3つは言える <%= check_box_tag :point, :value => "1" %>本が好き <%= check_box_tag :point, :value => "2" %>海外に行ったことがある <%= check_box_tag :point, :value => "3" %>ボランティアをしたことがある <%= check_box_tag :point, :value => "2" %>フェアトレード商品とは何か説明できる <%= check_box_tag :point, :value => "2" %>プロボノとはなにかわかる <%= submit_tag '送信' %> <% end %> ``` ### 補足情報 初めて質問するので説明の仕方もめちゃくちゃかもしれません。ご教授頂けると幸いです。よろしくお願い致します。
回答: Rubyタグしか付いていませんが Ruby on Railsの質問ではないのですか? RubyとRuby on Railsは別言語なので、そこは意識してください。 まず point=["3","5","1","9"] とすると ``` #pointを文字列から数値に変換する point.map(&:to_i) #pointを文字列から数値に変換して数値を合算する value=point.map(&:to_i).inject(:+) #合算した数値に合わせて文を表示する case value when 1..2 #合計が1~2の時 puts "君は社会貢献心の少ないフレンズなんだね" when 3..9 #合計が3~9の時 puts "君はやる気はあるけど、まだよくわかっていないフレンズなんだね" when 10..20 #合計が3~9の時 puts "すごーい" end ``` と言った感じにかけます。 しかし本当にこのままだとRubyだけの話なので ちょっと全体的な設計の話をすると。 * まず、ロジックが見えてしまっていいのか?(点数丸見えやん) * 又、質問をに変更があったり、点数の評価を変るときに今のままではviewをいちいち書き直さないといけませんが問題なはないのですか? * 質問はこれだけなんですか?他の質問を作りたくなった時に又controllerとviewを作り直すんですか? * 次やることを一次元評価(スカラーの点数のみ)で決めれるんでしょうか? * 回答結果を保存して後から参照する必要は? 上記の一つでもあれっと思ったら。 Ruby on Railsに従って question_title modelと question_content model を作成してcollection_check_boxes というヘルパーを使うと、後で、カスタマイズ可能な プログラムがスッキリかけます。(というかそれがRailsです。)