1

Rails で 1 つのアクションを実行していますが、別のアクション内から処理を続行したいと考えています。私のコードは次のようになります。

  send(new_action)                #call the new_action method
  action_name = new_action        #change the controller.action_name
  render :action => new_action    #inform the view that we're in new_action

これは機能しますが、action_name は、ActionController インスタンス内から変更されますが、ビュー内から次のように取得されるとリセットされます。

controller.action_name 

それを設定して固執させる方法はありますか?

編集:この問題を含まない別の解決策を見つけまし。ありがとう!

4

1 に答える 1

5

あなたはそれを間違った方法でやっています!

ActionPack の内部でこの種の操作を行うと、遅かれ早かれあなたが悲しむことはほぼ確実です。これらの内部がリリース間で根本的に変更されないという保証はありません。何をしているのか、なぜそれを行っているのかを正確に忘れてしまうため、(自分自身と他の人にとって) 維持するのが難しく、微妙なバグが発生する可能性が非常に現実的です。

代わりに、両方のアクションに共通するコードを取得して、コントローラーのプライベート メソッド、モデルの追加ロジック、または必要に応じてコントローラーの継承チェーンの上位にある共通関数など、共通のメソッドに配置します。

于 2009-01-29T08:27:10.347 に答える