2011-04-08 3 views
1

теперь у меня есть:Rails LINK_TO различные ресурсы

= link_to 'Back <', @discussable 

И @discussable может быть курс с названием, или группу с именем (я хотел бы я использовал такое же имя). Поэтому я хочу отобразить «Назад к * course_title *» или «Назад к * group_name *» в зависимости от типа @discussable. Как мне это сделать? Благодаря!

ответ

2

В ваших моделях вы можете создать метод, на который должна отвечать каждая модель, например def title, и оттуда вы можете это назвать.

Пример:

class Group < ActiveRecord::Base 
    #code 

    def title 
    self.name 
    end 

end 

class Student < ActiveRecord::Base 
    #code 

    def title 
    self.full_name 
    end 

end 

Тогда вы бы просто сделать:

= link_to "Back to #{@discussable.title} <", @discussable 
+0

Спасибо, Майк! Это очень ясный ответ, который был укомплектован новичком вроде меня. Наверное, это похожее решение, такое как Стив. Но я не должен определять метку для каждой модели с вашим решением. – randomor

+0

Нет проблем @ randomor. Удачи! –

+0

Могу ли я спросить, почему вы определяете метод заголовка в модели «Курс», который вызывает метод заголовка, который вы определяете в модели «Курс»? –

1

лично к каждому из классов моделей, я хотел бы добавить метод в label экземпляра, который возвращает любое значение не подходит, а затем сказать ...

= link_to «Назад к #{@discussable.label} < ", @discussable

+0

Спасибо Стив! Это такое умное решение, интересно, есть ли еще более элегантные способы сделать это. – randomor

+0

Ну, как изящно это зависит от контекста. Если это единственное представление, то это примерно так же изящно, как вам хочется. Если вы используете этот шаблон в нескольких местах, тогда вам может понадобиться создать вспомогательный метод для него, который работает примерно так: link_to_labeled 'Back to% s', @ discussable'. На самом деле, это напоминает мне, что приведенное выше было бы чуть более читаемым как '= link_to" Вернуться к% s <"% @ Обсуждаемый.label, @ обсуждать'. –

+0

Спасибо за более читаемую версию. Я многому научился у вас и Майка. Но слишком плохо я мог только проверить один ответ. – randomor