レンダリング:xml in rails私は常に:dasherize => falseオプションが必要です。もちろん、ソースコードを変更する必要はありませんが、デフォルトとしてアプリケーション全体を設定する方法はありますか?このような何かをやって"patch"レールレンダリング機能がデフォルトオプションを編集するレンダリング時に
答えて
は、他の誰かが見に来るとき潜在的に予期しない動作につながるの欠点を持っているかもしれない
何とか最初のものよりも優先され、その後、このオプションを指定して、それを呼び出してレンダリング機能...つまり、オーバーライドされたメソッドが見つかるまで、明示的に指定されていないときにdasherize falseのような振る舞いをするのは不思議に思うかもしれません)。つまり、ApplicationControllerまたは特定のコントローラの1つでは、renderメソッドをオーバーライドできます。
何かのように:
class MyController < ApplicationController
def render(options = nil, extra_options = {}, &block)
options ||= {} # initialise to empty hash if no options specified
options = options.merge(:dasherize => false) if options[:xml]
super(options, extra_options, &block)
end
end
あなたはdasherizeはまだあなたは、例えば、他の方向にハッシュマージを行うことができますレンダリングするために、あなたの呼び出しでオーバーライドすることを許可するかどうか
options = {:dasherize => false}.merge(options)
レンダリング 'show.xml.builder'、:layout => falseというディレクティブでページをレンダリングすると、この問題が発生しました。 optionsはハッシュの代わりにStringになります。私はそれがハッシュであることを確認するためのチェックを入れたが、それはハックのように思える。その他の提案はありますか? –
'if'条件を' options.is_aならば 'にすることは妥当と思われます。ハッシュとooptions [:xml] 'また、' '保証' 'の中で' 'スーパー' '呼び出しで' begin'/'ensure'ブロックを使うことができます。 – mikej
また、このようなsollutionを試みることができる:
alias_method_chain :render, :no_dasherize
def render_with_no_dasherize(options = nil, extra_options = {}, &block)
new_options = options
new_options = {:dasherize=>false}.merge(options) if(options[:xml])
render_without_no_dasherize(new_options, extra_options, &block)
end
あなたはアプリケーションコントローラ(そうすべてコントローラがafectedされます)にのみ特定のコントローラにそれを置くことができます。
これは、ある時点でオーバーライドされた関数にアクセスしたい場合があるため、これは良い方法です)。 –
- 1. 編集可能DevExpress.XtraGrid.Views.Grid.GridView私はして編集の編集機能を有効に
- 2. 編集機能は、
- 3. 編集ボックスコールバックが機能しない変更時
- 4. Googleクラウド機能:特定の時間にFirebaseノードを編集
- 5. JQuery - 行の編集機能
- 6. x編集可能なレンダリングhtmlエラーレスポンス
- 7. 編集時にチェックボックスがレンダリングされない
- 8. GMAPSのAPIは、編集機能に
- 9. 文字列編集時の置換機能の問題
- 10. 編集可能なtelerik mvcグリッド表示をカスタマイズし、クリック時に編集可能にするには?
- 11. GridViewを編集した後にフィルタが機能しない
- 12. ASP.NETのXMLグリッドビューの編集機能
- 13. django restフレームワークAPI編集機能
- 14. 編集機能付きNested_form宝石
- 15. 編集機能付きのJQGrid
- 16. 編集値のコレクション - 変数機能...(?)
- 17. Jsfデータテーブル内の編集機能
- 18. WinformsのDataGridViewに編集機能を追加する
- 19. uitextField.rightViewの編集機能を無効にする方法。
- 20. 実行時編集可能なリソースファイル
- 21. リロード時に編集コントロールが消える
- 22. 編集時にサイズ変更されない編集可能なHTML表セル
- 23. Dropzoneのドラッグアンドドロップ機能で編集可能なテキストフィールドを含める
- 24. Tablecellで編集機能と削除機能を実装する方法は?
- 25. 編集後にhrefリンクが機能しない
- 26. ロード時にテーブル値を編集する
- 27. デバッグ時にソースコードを編集する
- 28. Telerikグリッドの編集機能のカスケードに関する問題
- 29. セル編集中にキーを押したときにJTable編集が機能しない
- 30. 編集機能を持つphpでテーブルを作成する
うまくいけば、レンダリング機能を使用するアプリケーションの他の部分を壊してはいけません...コントローラによって呼び出されたときにのみ、このように動作するはずです(私はそれがとにかく呼び出される唯一の場所だと思います) – luca