1

新しいことに挑戦している私は頑固なので、あらゆる可能性を使い果たしたいと思っています。

リンク用のフィールドを持つ navbar というモデルがあります。

リンク フィールド内に、いくつかの単語を保存しました。

profile_link community_link

これらの単語は、navbars_helper に記録したメソッドの名前でもあるという点で重要です。

module NavbarsHelper
  def profile_link
    link_to current_user do
      image_tag(current_user.image.img.mini_avatar)
      current_user.name
    end
  end
  def community_link
    link_to 'Community', topics_path
  end
 ...
end

私が試みていた新しいことは、文字列から単語を抽出し、それらを使用してヘッダー レイアウトのメソッドを呼び出すことでした。

 - if signed_in?
      - @current_group.navbars do |navbar|
        - if navbar.kind == "Header"
          = navbar.links.to_s

navbar belongs_to グループ

だから、私が得るのはヘッダーの文字列です: profile_link community_link

しかし、私が欲しいのはメソッドの呼び出しです。これは可能ですか?もしそうなら、どのようにそれを行うか教えてもらえますか?

私は配列を扱った経験があまりないので、何か関係があるのではないかと思います

4

1 に答える 1

1

価値があるかどうかはよくわかりませんが、機能させることができると思います。追加の利点がほとんどないのに、多くの複雑さを追加しています。

そうは言っても、

- if signed_in?     
  - @current_group.navbars.each do |navbar|
    - if navbar.kind == "Header"
      - navbar.links.split(' ').each do |method|
        = self.send(method)

基本的に、 string を取得"profile_link community_link"し、スペース文字を使用して分割し、各メソッドをビューに送信します (selfこのコンテキストにあります)。を使用sendすると、通常どおりにメソッドが実行されますが、実行時に実行するメソッドを決定できるという利点があります:)

于 2013-06-26T07:57:46.120 に答える