我的控制器由来自需要布局的搜索结果页面的链接以及不需要布局的配置文件页面本身共享。我想要实现的是单个控制器方法show
,它既可以从配置文件页面通过AJAX绘制部分,也可以从搜索结果中绘制部分和布局。
我最重要的限制是我无法将dataType:
设置为script
。 为html
。因此,我不能使用那些在没有控制器的format.html参与的情况下呈现JS的spiffy AJAX脚本调用。
tabs_controller.js
def show
@organization = Organization.find(params[:organization_id])
@tab = @organization.tabs.find(params[:id])
respond_to do |format|
format.html { render :partial => 'tab', :layout => 'myHQpage' }
format.js
end
end
的javascript
$.get($(this).attr('href'), null, null, "html");
show.html.haml
= render :partial => 'tab'
我可以在这里使用哪种AJAX函数来绘制局部布局,而不是整个布局?
答案 0 :(得分:0)
我不太清楚,但这可能会对你有所帮助。
Yo可以在format.js块中添加:layout => false
。
def show
@organization = Organization.find(params[:organization_id])
@tab = @organization.tabs.find(params[:id])
respond_to do |format|
format.html { render :partial => 'tab', :layout => 'myHQpage' }
format.js { render :partial => 'tab', :layout => false }
end
end
答案 1 :(得分:0)
保留'script'数据类型设置,只需在搜索结果周围添加一个包装图。然后使用jQuery replaceWith函数替换该标记的内容:
_tag.html.erb:
<div id="search">
...
</div>
show.js.erb:
$('#search').replaceWith('<%= escape_javascript(render "tab") %>');