Techioz Blog

更新アクションには編集メソッドにインスタンス変数がありますか?ルビー・オン・レール

概要

更新アクションには編集メソッドにインスタンス変数がありますか?

検証を含むフォームを開発していて、既存の入力を削除せずに編集フォームをレンダリングしたいと考えています。ただし、編集フォームのインスタンス変数では nill が返されました。 インスタンス変数を保持する方法はありますか?

def update 
  render ‘edit’ and return unless account.update(params)
end

def edit
  @name = Account.find(params[:id]
end

解決策

いいえ、その理由は次のとおりです。

おそらく次のようにして欲しいものを得ることができます:

def update 
  @name = account.name # I'm guessing, here, because accessing `name` in the edit action seems to be cut
  render ‘edit’ and return unless account.update(params)
end

def edit
  @name = Account.find(params[:id]
end

ただし、より標準的な方法は、アカウント インスタンスを変数に保存することです。

@account = Account.find(params[:id])

そしてそれをビューで使用します(form_for @account など)。ただし、これはあなたのユースケースに適合する場合と適合しない場合があります。