私は数日間「特別な」繰り返しをやろうとしていたので、非常に明確にしようとします。特定の値の属性を持つActiveRecordモデルオブジェクトを反復処理する方法はありますか?
ひらがなという名前のカードを作成し、レター(A、E、I、O、U)で定義され、(KA、SA、TA ... KE、SE、TE ... 、O、U =>類似))。
私はインデックスページでそれらを一覧表示するひらがなインスタンスと.each
で繰り返しを行います。
<% @hiraganas.each do |hiragana| %>
<li>
<%= render 'allhiraganas', hiragana: hiragana %>
</li>
<% end %>
ビューは、私がhiragana.bigletter
方法で反復処理したい
<div class="row">
<ul class="list-inline text-center card-frame">
<li>
<div class="card">
<div class="front">
<% if current_user.try(:admin?) %>
<%= link_to hiragana_path(hiragana), class:'trash-hiragana', data: { confirm: 'Are you sure?' }, method: :delete do %>
<%= image_tag("delete-btn.png") %>
<% end %>
<% end %>
<span class="card-question popover-word" data-content="<h4 class='text-center letter-uppercase'>**<%= hiragana.bigletter.upcase %>**</h4><p class='text-center'><b><%= hiragana.midletter %></b> comme dans <b><%= hiragana.transcription %></b></p>">
<i class="fa fa-eye fa-lg"></i>
</span>
<!-- son de l'hiragana -->
<span class="audioclick popover-word" data-content="<p class='text-center'><b>le son arrive prochainement !</b></p>">
<i class="fa fa-volume-up fa-lg"></i>
</span>
<!-- image mnémotechnique -->
<% if hiragana.upload.blank? %>
<div class="idea">
<i class="fa fa-lightbulb-o fa-lg"></i>
</div>
<% else %>
<div class="idea">
<span class="popover-trigger"
data-toggle="popover"
data-content='<%= cl_image_tag(hiragana.upload,
:width => 210, :height => 290) %>'>
<i class="fa fa-lightbulb-o fa-lg"></i>
</span>
</div>
<% end %>
<!-- <div class="prononciation">
<i class="fa fa-comment"></i>
</div> -->
<div class="card-hiragana hiragana-<%=hiragana.bigletter.downcase.last%>">
<h1><b><%= hiragana.ideo1 %></b></h1>
</div>
<div class="card-katakana">
<p><%= hiragana.ideo2 %></p>
</div>
<div id="favorite_<%=hiragana.id%>">
<%= render 'favs/favorites', hiragana: hiragana %>
</div>
</div>
<div class="back">
<div class="col-sm-3 col-xs-4 col-md-3 containerbackcards-<%=hiragana.bigletter.downcase.last%>">
<div class="backcard-hiragana">
<h1><b><%= hiragana.ideo1 %></b></h1>
</div>
<div class="card-bigletter">
<h4><%= hiragana.bigletter.upcase %></h4>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
です。
<span class="card-question popover-word" data-content="<h4 class='text-center letter-uppercase'>**<%= hiragana.bigletter.upcase %>**</h4><p class='text-center'><b><%= hiragana.midletter %></b> comme dans <b><%= hiragana.transcription %></b></p>">
<i class="fa fa-eye fa-lg"></i>
</span>
私はそうでbigletter を持つすべてのhiraganas縦の列に表示、別の縦の列にbigletter Eディスプレイを持つすべてのhiraganasとを持っていると思いますので。
一部の人々は.select
について教えてくれましたが、どこに置くべきか分かりません。ひらがなモデルでは?
モデルでコードを乾かすにはどうすればいいですか?ここにひらがなモデルです:
class Hiragana < ActiveRecord::Base
belongs_to :user
has_many :favs, dependent: :destroy
mount_uploader :upload, ImageUploader
mount_uploader :sound, SoundUploader
def is_faved_by(user)
self.favs.where(user: user).take
end
end
ありがとうございました。
<% @hiraganas.select { |hiragana| hiragana.bigletter == 'a' }.each do |hiragana| %>
<%= render 'somehiraganas', hiragana: hiragana %>
<% end %>
テンプレート内のコードを最小限に抑えることが望ましいですが、モデル
class Hiragana < ActiveRecord::Base
def self.with_bigletter(bigletter)
where(bigletter: bigletter).order(:midletter)
end
end
にメソッドを追加して、結果を割り当てる方が良いでしょう:
@DaveSchweisguthありがとうございました。私のコードをモデルで乾かすために何ができるか教えてください。ここではひらがなのモデルである: 'クラスひらがなが
質問に追加する必要があります。 –
はい私は新しいです。モデルとインデックスビュー 'with_bigletter'と' select'でプロセス全体を見せてください。私は何ができるのか分からない。私は今日何か新しいことを学びたいので教えてください。よろしく。 –