0

私の Rails アプリにはアクション (def do_some_stuff) がありますが、その前にまず投稿を更新したいと思います。それが成功した場合は、「実行中」を終了します...簡単ですよね?

これが私の行動です

def do_some_stuff
  Rails.logger.debug "Post id is #{@post.id}"
  update #calls the update action
  ## does some stuff
end

更新する代わりに、Rails は次のエラーをスローします。

ロガーで投稿IDを取得していますが、何らかの理由でそのエラーが発生します。

物事を簡単にするために、「do_some_stuff」アクションで update アクションを呼び出そうとすることにしました..私は strong_params を使用しています

別のアクションから「更新」アクションを呼び出すにはどうすればよいですか?

前もって感謝します。どんな助けでも大歓迎です。


スマホで書いたので誤字脱字はご容赦ください


私のログ: PostsController#do_some_stuff を HTML パラメーターとして処理: id = 149

4

1 に答える 1

2

あるアクションを別のアクションから呼び出すべきではありません。代わりにupdate_attributes、投稿を呼び出すだけです。

def do_some_stuff
  if @post.update_attributes(params[:post])
    ## do some stuff
  end
end

成功した場合update_attributesは true を返し、"do some stuff" ブロックが実行されます。

これは、すでにプレゼントを持っていることを前提としています@post。通常、before_filterブロックまたはメソッドで find: を使用して取得します@post = Post.find(params[:id])

于 2013-07-25T22:14:32.680 に答える