0

ペットレールアプリを作ろうとしています。私のペット モデルには、2 つのブール値、Hungary と feed_me が含まれています。今のところ、hungry と feed_me の両方をビューに設定できますが、feed_me が true の場合、hungry が自動的に false に変更されるようにモデルを設定しようとしています。しかし、私が何をしても、feed_me が空腹をリセットすることはありません。これは私が今モデルに持っているものです:

    attr_accessor :feed_me
    before_save :feed


     def feed
       @feed_me = Creature.find(params[:feed_me])
       @hungry=Creature.find(params[:hungry])
       if @feed_me==true
         @hungry=false
       end 
    end

私はRailsを初めて使用しますが、モデルがparamsハッシュにアクセスできる必要があることを理解しているため、それを使用して値をリセットできない理由について混乱しています。

4

1 に答える 1

2

モデルのコールバックを使用して正しい方向に進んでいますが、モデルはparamハッシュにアクセスできません-コントローラーで利用できます。

モデルは自身の属性の値をすでに知っているので、params から取得する必要はありません。私が想像するコントローラーは更新中feed_meです。

feed_meまた、データベース列に基づいているattr_accessorと仮定して宣言する必要はありません。

次のように変更できますbefore_save

def feed
  if self.feed_me
    self.hungry = false
  end
end

あなたのコントローラーでは、次のようなことをすると思います:

def update
  pet = Pet.find(params[:id])
  pet.feed_me = params[:feed_me]

  if pet.save
    redirect_to pet_path(pet)
  else
    flash[:notice] = 'Error saving pet'
    render :edit
  end
end
于 2013-09-21T19:14:46.213 に答える