0

ショーケースに ContestEntry レコードを 1 つ追加するには、このようなアクションがあります。

@entry = ContestEntry.find(params[:content_id])
if @entry.view_in_showcase == true
  @entry.view_in_showcase = false
  @entry.save
  redirect_to :back, :notice => "Drop design to showcase"
else
  @entry.view_in_showcase = true
  @entry.save
  redirect_to :back, :notice => "Add design to showcase"
end

しかし、今は複数のレコードに対して実装する必要があり、ContestEntry レコードを含む配列があります。これらのコードでこの配列を使用するにはどうすればよいですか?

例えば ​​:

arr_showcase = [ContestEntry.first,ContestEntry.last,..]

テキストの上で同じ目的でこの配列を更新するにはどうすればよいですか。

4

2 に答える 2

1

このコードを再利用するための最初のステップは、メソッド内でリファクタリングすることです。

class ContestEntry
  def toggle_view_on_showcase!
    view_on_showcase.toggle!
    save
    view_on_showcase
  end
end

# Refactor controller
if @entry.toggle_view_on_showcase!
  redirect_to :back, :notice => "Add design to showcase"
else
  redirect_to :back, :notice => "Drop design to showcase"
end

# reuse!
arr_showcase.each { |e| e.toggle_view_on_showcase! }
于 2013-01-29T17:55:52.590 に答える
1

配列が@entries次のとおり であると仮定します。

@entries.each {|e| e.update_attribute('view_in_showcase', false) if e.view_in_showcase } 
于 2013-01-29T17:53:48.163 に答える