Как поцеловать и умный этот метод - PullRequest
0 голосов
/ 07 сентября 2010

У меня есть действие в моем приложении RoR, и оно вызывает другой сценарий в зависимости от пользователя, выполняющего его.

 def index

 @user = User.find(session[:user_id], :include => [ :balances, :links, :comments ])

 render :file => "#{RAILS_ROOT}/app/views/user/index_#{@user.class.to_s.downcase}.html.erb"

  end

Как сделать звонок, чтобы сделать изящнее и проще?

Ответы [ 2 ]

4 голосов
/ 07 сентября 2010

Попробуйте:

render :template => "user/index_%s" % @user.class.to_s.downcase
1 голос
/ 07 сентября 2010

Вы можете сделать его частичным (index_whwhat.html.erb -> _index_whwhat.html.erb), и это будет выглядеть так:

def index
  @user = User.find(session[:user_id], :include => [ :balances, :links, :comments ])
  render :partial => "index_#{@user.class.to_s.downcase}"
end

Кроме того, я бы добавил метод в пользовательской модели, например:

def view
  "index_#{class.to_s.downcase}"
end

Итак, ваше действие индекса будет:

def index
  @user = User.find(session[:user_id], :include => [ :balances, :links, :comments ])
  render :partial => @user.view
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...