現在のコントローラに基づいてブレッドクラムを割り当てるために、アプリケーションコントローラに汎用ブレッドクラムメソッドを作成しようとしています。私は「シング」のインデックスのパン粉を望んでいた場合、私は、ビューに必要があるでしょう:文字列をコントローラメソッド呼び出しに変換する
<%= breadcrumb :things, things %>
そして編集やショーのために:
物事がその物事コントローラのメソッドである<%= breadcrumb :thing, thing %>
すべてのものを返し、そして事が暴露され、関連するthing.Bothを返すメソッドである、と私は自分のアプリケーションのレイアウトを持っている:
<%= breadcrumb crumb, crumb_resource %>
そして、自分のアプリケーションのコントローラで:
def crumb
return controller_name.singularize.to_sym if edit_or_show_action
controller_name.to_sym
end
def crumb_resource
resource = controller_name
resource = controller_name.singularize if edit_or_show_action
end
def edit_or_show_action
action_name == 'edit' || 'show'
end
これは明らかに、コントローラメソッドの呼び出しではなく、crumb_resourceの文字列を返します。私が見つけることができるから、それはsendと何か関係があると信じていますが、
明らかに動作しません。コントローラのメソッド呼び出しに返される文字列をどのように変換できますか?
コントローラーメソッドを呼び出す必要がある理由は何ですか?ほとんどの場合、コントローラメソッドはビューを生成するか、ビューからアクセスできるヘルパーメソッドです。一般に、あるコントローラを他のコントローラから呼び出すことは想定されていません。だから、なぜ 'controller.send(resource)'が必要ですか? – Casper
私はリソース文字列を私が探しているオブジェクトに変換する別の方法を知らないので、ビューのオブジェクトにアクセスしている場合は、コントローラコールを使って行うのが最良だと思うが、そのため、私は "リソース"文字列をビュー用のコントローラメソッドに変換しようとしています。私がそれに近づいている場合、またはより良い方法があることを私に教えてください。 – Mark
あなたは何か間違っているかもしれませんが、おそらくそうではありません。私はあなたが期待していることの具体的な例を使ってあなたの答えを編集する必要があると思います。ここで抽象理論を話しています。具体的なものを入れてみましょう。通常、リソースはコントローラではなくモデルから来ますが、おそらくこの場合はもっと巧妙な方法があります。 – Casper