Ruby on rails rails—一个操作,多个模板—rails是如何处理这个问题的?
让我们以PeopleController#show action为例。如果我需要根据应用程序以几种不同的方式显示一个人,该怎么办。我有一些基于请求格式(js、html)的选项,但我确实需要更多 我可以做不同的控制器动作,但我更喜欢基本的控制器,除非我没有明智的选择。另一个想法是有一个case语句和一个模板参数,但这似乎也很麻烦(特别是当某些视图针对某些用户类型时) 我的问题是:rails是如何做到这一点的 人民控制器.rbRuby on rails rails—一个操作,多个模板—rails是如何处理这个问题的?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,让我们以PeopleController#show action为例。如果我需要根据应用程序以几种不同的方式显示一个人,该怎么办。我有一些基于请求格式(js、html)的选项,但我确实需要更多 我可以做不同的控制器动作,但我更喜欢基本的控制器,除非我没有明智的选择。另一个想法是有一个case语句和一个模板参数,但这似乎也很麻烦(特别是当某些视图针对某些用户类型时) 我的问题是:rails是如何做到这一点的 人民控制器.rb def show set_partial respond_to
def show
set_partial
respond_to do |format|
format.js
end
end
protected
def set_partial
@template = case params[:template]
when 'small' then 'small_view'
when 'quick' then 'quick_view'
else
'full_view'
end
end
人物/show.js.erb
$('body').append("<%= escape_javascript(render partial: @partial) %>")
$('body')。追加(“”)
嗨,朋友,这可能会对你有所帮助
def show
respond_to do |format|
if (condition)
format.js { render :template => "small_view" }
#renders small_view.js.erb
format.html { render :template => "small_view" }
#renders small_view.html.erb
elsif (condition)
format.js { render :template => "quick" }
format.html { render :template => "quick" }
elsif (condition)
format.js { render :template => "full_view" }
format.html { render :template => "full_view" }
else
format.html
format.js
end
end
end