2012-12-12 57 views
0

因此,我正在寫一個幫助程序來幫助我填寫Rails引導程序的輪播。這是一塊輔助方法的代碼:關於嵌套標籤幫助程序方法的SyntaxError

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: syntax error, unexpected keyword_end, expecting ':'

指點..小時對抗這個東西,還是找不到解決方案。

回答

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 

這裏是一些其他的怎麼辦呢 html_safe and helpers in rails 3

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 
+0

不是連鎖的例子,每個部分是相互獨立 –

+0

無論如何,基本語法是:[狀態]? [如果爲true,則返回]:[如果爲false,則返回]。 –

+0

是的,即時通訊來自波普編程和第二部分是不是必然的,謝謝反正,固定一個我的問題:) –