私はDeviseコードを調べて、ほとんどのコントローラーがリソースを生成することに気づいた。Deviseコントローラの「yield resource」は何をしますか?
class Devise::RegistrationsController < DeviseController
# ...
def create
build_resource(sign_up_params)
resource.save
yield resource if block_given?
# ...
これはある種の拡張機能でなければなりませんが、実際にブロックをコントローラアクションに渡す方法はわかりません。
注:この質問は、Rubyのブロックの仕組みではなく、実際にRailsのリクエストサイクルでどのように行うのかについてです。
http://mudge.name/2011/01/26/passing-blocks-in-ruby-without-block.html – Jonathan
@ジョナサン右のようなものがあるかもしれません。例えば
が、最初の場所で 'Devise :: RegistrationsController#create'にブロックを渡す方法はまだ説明していません。 AFAIKこれはルータによって呼び出されます。 – max
私が間違っていない場合、Rubyのどのメソッドにもブロックを渡すことができます。やってみなよ。限り、それは最後の引数である – Jonathan