0

私はミドルマンのプロジェクトに取り組んでいます。メソッドの結果を別のメソッドのパラメーターとして渡そうとしています。コンマと括弧であらゆる種類の構文の問題に遭遇しています。私にはすべてが正しく見えます、私は狂っていますか? 前もって感謝します!

私が問題を抱えているメソッド呼び出しはcreate_campus_subnav()

module SubnavHelper

  def create_subnav_link ( label, link="" )
    if link == ""
      link = label
    end
    return "          <li id='item-#{link}'><a class='title' id='link-#{link}'>#{label}</a></li>"
  end

  def create_subnav (*links)
    subnav = "\
    <nav class='nav-sub'>\
      <div class='nav-wrap'>\
        <ul class='nav-list'>"

    links.each do |attr,val|
      subnav += " attr: " + attr;
      subnav += " val: " + val;
      # subnav += args["attr"] + "\n"
    end 

    subnav += "\
        </ul>\
      </div>\
    </nav>"
    return subnav
  end

  def create_campus_subnav
      subnav = create_subnav ( 
        create_subnav_link ("Campus Overview", "Overview"), 
        create_subnav_link ("About", "About"),  
        create_subnav_link ("Admissions"), 
        create_subnav_link ("Career Services" "CareerServices"),       
        create_subnav_link ("Schedules, Tuition & Fees" "Tuition"),         
        create_subnav_link ("Financial Assistance & Scholarships" "FinancialAssistance"),         
        create_subnav_link ("Faculty")      
      )
      puts subnav
  end
end

そしてエラー:

/dev/config.rb:54:in `require': /gia/dev/helpers/subnav_helper.rb:36: syntax error, unexpected ',', expecting ')' (SyntaxError)
        create_subnav_link ("Campus Overview", "Overview"), 
                                              ^
/dev/helpers/subnav_helper.rb:36: syntax error, unexpected ')', expecting keyword_end
        create_subnav_link ("Campus Overview", "Overview"), 
                                                          ^
/dev/helpers/subnav_helper.rb:37: syntax error, unexpected ',', expecting ')'
        create_subnav_link ("About", "About"),  
                                             ^
/dev/helpers/subnav_helper.rb:37: syntax error, unexpected ')', expecting keyword_end
        create_subnav_link ("About", "About"),  
                                                      ^
/dev/helpers/subnav_helper.rb:39: syntax error, unexpected tLPAREN_ARG, expecting keyword_do or '{' or '('
        create_subnav_link ("Career Services" "...
                            ^
/dev/helpers/subnav_helper.rb:39: syntax error, unexpected ',', expecting keyword_end
...er Services" "CareerServices"),       
...                               ^
/dev/helpers/subnav_helper.rb:41: syntax error, unexpected tLPAREN_ARG, expecting keyword_do or '{' or '('
        create_subnav_link ("Financial Assistance & Schol...
                            ^
/dev/helpers/subnav_helper.rb:41: syntax error, unexpected ',', expecting keyword_end
...rships" "FinancialAssistance"),         
...                               ^
/dev/helpers/subnav_helper.rb:43: syntax error, unexpected ')', expecting keyword_end
4

2 に答える 2

1
def create_subnav (*links)
  subnav = "\
    <nav class='nav-sub'>\
      <div class='nav-wrap'>\
        <ul class='nav-list'>"

        links.each do |attr,val|
          subnav += " attr: " + attr;
          subnav += " val: " + val;
          # subnav += args["attr"] + "\n"
        end 

        subnav += "\
        </ul>\
      </div>\
    </nav>"
    return subnav
end

def create_campus_subnav
  subnav = create_subnav(
                          create_subnav_link("Campus Overview", "Overview"),
                          create_subnav_link("About", "About"),
                          create_subnav_link("Admissions"),
                          create_subnav_link("Career Services" "CareerServices"),
                          create_subnav_link("Schedules, Tuition & Fees" "Tuition"),
                          create_subnav_link("Financial Assistance & Scholarships" "FinancialAssistance"),
                          create_subnav_link("Faculty")
                         )
                         puts subnav
end

これでうまくいきますが、引数リストの最初のエントリを同じ行に配置することをお勧めします。

于 2012-11-15T03:28:59.817 に答える
0

content_tag一連の文字列連結を行う代わりに、組み込みのビュー ヘルパーを使用してみてください。

def subnav(*links)
  content_tag(:nav, 
    content_tag(:div,
      content_tag(:ul,
        links.map do |link|
          content_tag :a, link.text, :href => link.href do
        end.join, :class => 'nav-list'),
      :class => 'nav-wrap'
    ),
    :class => 'nav-sub'
  )
end

注: 「links」変数の構造を推測しただけですが、おわかりいただけたと思います。

于 2012-11-15T05:22:27.383 に答える