2014-11-06 117 views
1

我必須在link_to image_tag語句中處理一組條件 - 圖像是否存在,用戶是否擁有它?這導致了可怕的代碼量。我想要做的就是這一點 -是否可以將三元運算符放入函數調用中?

link_to image_tag(image.blank? ? generic_image : image), current_user == image.user ? edit_image_path(image) : image_path(image) 

...是有可能做到這一點(和我得到的錯誤,只是語法問題),或者這只是不會做,能?

+0

我不確定,但我很肯定,如果是的話,您需要將括號內的整個三元操作包裹起來。 'image_tag((image.blank??generic_image:image))' – 2014-11-06 09:54:58

回答

1

它可能更容易爲自己定製的幫手 - 是這樣的:

def link_as_image(image) 
    image = generic_image if image.blank? 
    path = path_for image 

    link_to image_tag(image), path 
end 

def path_for(image) 
    current_user == image.user ? edit_image_path(image) : image_path(image) 
end 
+0

嗨達克斯 - 它發現我的錯誤是語法,它可以與三元操作符 - 但你的答案看起來不錯,因爲我要做一個很多 - 歡呼聲:) – RADan 2014-11-06 10:04:13

+0

根本不是 - 如果你能使某些東西可重用,通常這樣做更好。如果有幫助,請檢查我的回答:) – dax 2014-11-06 10:05:28

0

這是可能的 - 我得到這個工作:

<%= link_to image_tag((book.cover.blank? ? 'gen_book_cover.png' : book.cover), class: "bookcover"), book.user == current_user ? edit_book_path(book) : book_path(book), class: 'nolinkystyle' %> 

...但是這種方法在上面的答案中對我更好,因爲在一堆地方實現它更簡單。

相關問題