Closed MikamiShu closed 11 months ago
VIEWの方では,@scores
がNillの時,表示しない設定を加えました( https://github.com/MIZOGUCHIKoki/MusicScoreManagementApp/pull/33/commits/0a927f19562ddbb2a973ee48eca4c172e6b950a5 ).検索に引っかからないとき,@scores=nill
になると思うので.(本来はNillにならないから,デバッグ用)
デバッグするときに,コードをこのように書き換えてください.
app/views/home.html.erb
- <% if @scores.any? %>
+ <% if @scores.present? && @scores.any? %>
<ol>
<% @scores.each do |score|%>
<li>
<%= link_to score.name, score%> |
<%= score.created_at %>
</li>
<% end %>
</ol>
<% end %>
このようにすると,一応先に進みます.
app/controllers/users_controller.rb
def home
# if params[:input_value] == :order
@user = User.find(params[:id]) # ユーザ特定
# order = if params[:order] == 'asc' # 昇順
# :grate_sort_asc
# elsif params[:order] == 'desc' # 降順
# :grate_sort_desc
# else
# :all
# end
# @scores = @user.scores.send(order) # ソート結果格納
@scores = @user.scores.all
# elsif params[:input_value] == :name || params[:input_value] == :composer || params[:input_value] == :arranger
# @search_params = score_search_params
# @scores = score_search(@search_params)
# elsif !params[:use_gakki].nil?
# @search_params = score_search_gakki_params
# @scores = score_search_gakki(@search_params)
# end
end
app/views/user/home.html.erb
-<div class="hide-and-seek">
- <%= form_with model: @scores do |form| %>
- <%= form.check_box :use_gakki, {multiple: true} %>piccolo
- <%= form.check_box :use_gakki, {multiple: true} %>c_flute
- <%= form.check_box :use_gakki, {multiple: true} %>oboe
- <%= form.check_box :use_gakki, {multiple: true} %>english_horn
- <%= form.check_box :use_gakki, {multiple: true} %>e_clarinet
- <%= form.check_box :use_gakki, {multiple: true} %>b_clarinet
- <%= form.check_box :use_gakki, {multiple: true} %>b_bass_clarinet
- <%= form.check_box :use_gakki, {multiple: true} %>bassoon
- <%= form.check_box :use_gakki, {multiple: true} %>e_alto_saxophone
- <%= form.check_box :use_gakki, {multiple: true} %>b_tenor_saxophone
- <%= form.check_box :use_gakki, {multiple: true} %>b_baritone_saxophone
- <%= form.check_box :use_gakki, {multiple: true} %>b_trumpet
- <%= form.check_box :use_gakki, {multiple: true} %>f_horn
- <%= form.check_box :use_gakki, {multiple: true} %>trombone
- <%= form.check_box :use_gakki, {multiple: true} %>eb
- <%= form.check_box :use_gakki, {multiple: true} %>euphonium
- <%= form.check_box :use_gakki, {multiple: true} %>tuba
- <%= form.check_box :use_gakki, {multiple: true} %>string_bass
- <%= form.check_box :use_gakki, {multiple: true} %>piano
- <%= form.check_box :use_gakki, {multiple: true} %>harp
- <%= form.check_box :use_gakki, {multiple: true} %>timpani
- <%= form.check_box :use_gakki, {multiple: true} %>drums
- <%= form.check_box :use_gakki, {multiple: true} %>percussion
- <% end %>
- </div>
おそらくこれで通ると思います。
変更点は、form_with
で@scores
を参照せずに do |form|
としたことと、
その次の行の div class field
の2点です。
<input type="checkbox" id="hide">
<label class="hide" for="hide">使用楽器</label>
<div class="hide-and-seek">
<%= form_with do |form| %>
<div class="field">
<%= form.label :use_gakki %>
<%= form.check_box :use_gakki, {multiple: true} %>piccolo
<%= form.check_box :use_gakki, {multiple: true} %>c_flute
<%= form.check_box :use_gakki, {multiple: true} %>oboe
<%= form.check_box :use_gakki, {multiple: true} %>english_horn
<%= form.check_box :use_gakki, {multiple: true} %>e_clarinet
<%= form.check_box :use_gakki, {multiple: true} %>b_clarinet
<%= form.check_box :use_gakki, {multiple: true} %>b_bass_clarinet
<%= form.check_box :use_gakki, {multiple: true} %>bassoon
<%= form.check_box :use_gakki, {multiple: true} %>e_alto_saxophone
<%= form.check_box :use_gakki, {multiple: true} %>b_tenor_saxophone
<%= form.check_box :use_gakki, {multiple: true} %>b_baritone_saxophone
<%= form.check_box :use_gakki, {multiple: true} %>b_trumpet
<%= form.check_box :use_gakki, {multiple: true} %>f_horn
<%= form.check_box :use_gakki, {multiple: true} %>trombone
<%= form.check_box :use_gakki, {multiple: true} %>eb
<%= form.check_box :use_gakki, {multiple: true} %>euphonium
<%= form.check_box :use_gakki, {multiple: true} %>tuba
<%= form.check_box :use_gakki, {multiple: true} %>string_bass
<%= form.check_box :use_gakki, {multiple: true} %>piano
<%= form.check_box :use_gakki, {multiple: true} %>harp
<%= form.check_box :use_gakki, {multiple: true} %>timpani
<%= form.check_box :use_gakki, {multiple: true} %>drums
<%= form.check_box :use_gakki, {multiple: true} %>percussion
</div>
<% end %>
上記に加えて <% if @scores.any? %>を <% if @scores.present? && @scores.any? %>に変更すると楽譜登録画面が表示されました
@tanakaryo341 @1250352 へ引継ぎます.
エラーが解消されましたので issues を閉じます
一般ユーザでログインした直後です.
<原因> おそらくhomeアクションでの画像の部分でスコープを通っていないためNilであると言っているのかと思います.
<原因と思われる画面>
<エラー画面>
原因が絞れました.
UsersController#home
の@scores
がNillであることが原因です.