words/index ページに、英単語→日本語訳の表を表示しています。
(seeds.rbのCSVをindexに表示。)
英単語にチェックボックスをつけ、選択した英単語だけ、words/requestページに表示させたいのですが、エラーはないのですが表示できません。どうしたらいいでしょうか?
また、<%= form_tag("/words/request") do %>と、<input type="checkbox" name="choice" value="word_id”>の箇所を、form_withに変更するにはどうしたらいいでしょうか?
(Mac OS Big Sur Ruby 2.6.3 Rails 6.0.0)
seeds.rb
ruby
1require "csv" 2 3CSV.foreach('db/word.csv', headers: true) do |row| 4 Word.create( 5 enword: row['enword'], 6 jaword: row['jaword'], 7 ) 8end
schema.rb
ruby
1create_table "words", force: :cascade do |t| 2 t.text "enword" 3 t.text "jaword" 4 t.datetime "created_at", precision: 6, null: false 5 t.datetime "updated_at", precision: 6, null: false 6 t.boolean "choice" 7 end
words_controller
ruby
1def index 2 @words = Word.all 3end 4 5def request 6 if params[:choice] == true 7 @words = Word.where(id: params[:choice]) 8 @words.save 9 end 10end 11------- 12def word_params 13 params.require(:word).permit(:id, :enword, :jaword, choice:[]) 14end
words/index.html
ruby
1<%= form_tag("/words/request") do %> 2 ------------------------ 3 <tbody> 4 <% @words.each do |word| %> 5 <tr> 6 <td><input type="checkbox" name="choice[]“ value="word_id”></td> 7 <td><%= word.enword %></td> 8 <td><%= word.jaword %></td> 9 <td><%= link_to 'Show', word %></td> 10 <td><%= link_to 'Edit', edit_word_path(word) %></td> 11 <td><%= link_to 'Destroy', word, method: :delete, data: { confirm: 'Are you sure?' } %></td> 12 </tr> 13 <% end %> 14 </tbody> 15 </table> 16 <input type="submit" value="選択"> 17 <% end %>
words/request.html
ruby
1 <tbody> 2 <% if @words.present? %> 3 <% @words.each do |word| %> 4 <tr> 5 <td><input type="checkbox" name="choice" value="word_id"></td> 6 <td><%= word.enword %></td> 7 <td><%= word.jaword %></td> 8 </tr> 9 <% end %> 10 <% end %> 11 </tbody> 12</table> 13<input type="submit" value="保存">
ターミナル (3個選択の場合)
ruby
1Parameters: {"authenticity_token"=>"p0Ww3K/qyDgUybK2f78n1peVYpwz5c7gu4Qo1T4XvQs4Ionjw6+myty+2SHp3mJwsBIORdMRcCH03zwHKVgzGA==", 2 "choice"=>["word_id", "word_id", "word_id"]}
追記
word.csv (今回は練習でできれば将来csvファイルを増やしたいのですが--。)
ruby
1id,enword,jaword 21,apple,りんご 32,orange,オレンジ 43,red,赤 54,black,黒 65,white,白 76,tree,木 87,mountain,山 98,sky,空 109,star,星 1110,day,日
words/index.html
(以下のような形式にすべきでしょうか? 現在はroutesの不具合等でエラーが出ます)
ruby
1<%= form_with model: @words, local: true do |f| %> 2 <%= f.check_box :choice %> 3 <%= f.submit %> 4 <% end %> 5 6<table class="table-responsive table table-striped table-bordered"> 7 <thead> 8 <tr> 9 <th></th> 10 <th>English</th> 11 <th>Japanese</th> 12 <th collapse="3"></th> 13 </tr> 14 </thead> 15 16 <tbody> 17 <% @words.each do |word| %> 18 <tr> 19 <td><input type="checkbox" name="choice[]" value="word.id" ></td> 20 <td><%= word.enword %></td> 21 <td><%= word.jaword %></td> 22 <td><%= link_to 'Show', word %></td> 23 <td><%= link_to 'Edit', edit_word_path(word) %></td> 24 <td><%= link_to 'Destroy', word, method: :delete, data: { confirm: 'Are you sure?' } %></td> 25 </tr> 26 <% end %> 27 </tbody> 28 </table>
現在のwords/index.html
ruby
1<%= form_tag("/words/request") do %> 2 <table> 3 —————— 4 </table> 5<% end %>
回答1件
あなたの回答
tips
プレビュー