2016-01-02 9 views
1

Так что у меня этот код в моем Rails ведущего (по аналогии с Draper драгоценного камня):рельсов метод из нескольких методов

def title 
    h.link_to 'Favor', favor_path(@favor) + asked_or_published? + user_link 
    end 

    def asked_or_published? 
    if asked_favor? 
     h.content_tag(:p, "published by") 
    elsif published_favor? 
     h.content_tag(:p, "asked by") 
    end 
    end 

    def user_link 
    h.link_to @favor.favor_asker.firstname, h.user_path(@favor.favor_asker) 
    end 

И я звоню метод title на моем взгляде. Проблема в том, что вызов этого метода возвращает только часть link_to 'Favor', а не остальное. Почему это?

Заранее благодарен!

ответ

2

Это проблема с приоритетом группировки, биты + asked_or_published? + user_link добавляются к пути, генерируемому favor_path(@favor). Не уверен, что их тоже избегают, но это не имеет значения.

Заменить это:

h.link_to 'Favor', favor_path(@favor) + asked_or_published? + user_link 

с:

h.link_to('Favor', favor_path(@favor)) + asked_or_published? + user_link 
+0

Работал как шарм! Большое спасибо :) – fardin

+0

Теперь я звоню 'def rewards @ favor.rewards.each do | награда | award.title end end_ в моем представлении, но вместо атрибута title я получаю весь объект распечатанным. Не могли бы вы мне помочь в этом? :) – fardin

+1

Извините, этот код выглядит многострочным, но он отображается встроенным, потому что это комментарий (stackoverflow не поддерживает блоки кода в комментариях). Я не уверен, что понимаю, как вы используете его в представлении. Однако это звучит как другая проблема, и было бы лучше открыть новый вопрос. SO больше похож на энциклопедию, чем на форум, и вопросы должны быть конкретными для одной проблемы, а не расти как нить форума или разговор. – tompave