0

そこで、Rails のブートストラップのカルーセルを埋めるのに役立つヘルパーを作成しています。これはヘルパー メソッドのコードです。

def carousel_item(element, active = false)          
    content_tag :div, class:"item"+(active ? " active" : "") do
        image_tag("carousel/"+element.name) +
        if !element.desc.nil? || !element.title.nil? || !element.link.nil? do
            content_tag(:div, {class:'container'}) do
                !element.title.nil? ? content_tag(:h1, element.title) +
                !element.desc.nil? ? content_tag(:p, element.desc, class:"lead") +
                !element.link.nil? ? link_to(element.linktitle, url_for(action: element.link), {class:"btn btn-large btn-primary"}) +
            end             
        end
    end     
end

しかし、次にこのエラーが発生します:

app/helpers/application_helper.rb:22: 構文エラー、予期しない keyword_end、':' が必要です

メソッドを閉じる前の最後の終了後を指しています..このことと何時間も戦っていますが、まだ解決策が見つかりません。

4

2 に答える 2

0

...

!element.title.nil? ? content_tag(:h1, element.title) +
(!element.desc.nil? ? content_tag(:p, element.desc, class:"lead") +
(!element.link.nil? ? link_to(element.linktitle, url_for(action:   element.link), {class:"btn btn-large btn-primary"}) : nil ) : nil) : nil
于 2012-12-12T21:29:17.427 に答える
0

: ""最初に、各条件の最後にあるインライン条件の書き込みを修正しました。(Valery Kvon に感謝します)それから、.html_safe メソッドを使用した入れ子の問題の解決策を見つけました。すべてを文字列 var に保存し、html_safe で返します。コードは次のとおりです。

def carousel_item(element, active=false )
    if !element.nil?
        content_tag(:div,class:"item"+(active ? " active" : "")) do 
            image_tag("carousel/"+element.name) + #important to concat with next part
            if !element.desc.nil? || !element.title.nil? || !element.link.nil?
                content_tag(:div,class:"container") do
                    content_tag(:div,class:"carousel-caption") do
                        c = ""
                        !element.title.nil? ?   c += content_tag(:h1,element.title) : ""
                        !element.desc.nil? ?    c += content_tag(:p,element.desc,class:"lead") : ""
                        !element.link.nil? ? c += link_to(element.linktitle,url_for(action: element.link),class:"btn btn-large btn-primary") : ""
                        c.html_safe #this is the key that solves eveything
                    end
                end
            else
                nil
            end
        end
    end
end

ここでは、レール 3 で html_safe とヘルパーを実行する方法の他の例をいくつか示します 。

于 2012-12-13T04:21:38.707 に答える