在div中渲染控制器动作的html内容

时间:2011-06-09 18:06:52

标签: ruby-on-rails

我想在div中呈现动作的内容(例如new_sub_batch)。

我试过

<div id="newBatch">
<%= render :template => 'new_sub_batch.html.erb' %> 
</div>

但没有显示任何内容。

我甚至试过<%= render :action => 'new_sub_batch' %> ..但仍然没有。

有什么建议吗?

非常感谢

2 个答案:

答案 0 :(得分:3)

你想要的是偏爱。将两个视图将使用的公共标记分解为单个文件,并在其名称前加下划线。然后调用render :partial => 'filename',其中filename是不带下划线的部分名称。

在您的情况下,您从new_sub_batch.html.erb中提取的代码可能会在_batch.html.erb部分内,与您的其他sub_batch视图位于同一目录中。您可以使用以下方式渲染此部分:

render :partial => 'batch'

在Rails3中,您只需使用render 'batch'

如果要将变量传递给partial,可以通过:locals执行此操作。假设您想要传递@sub_batch变量,您的调用将如下所示:

render :partial => 'batch', :locals => { :sub_batch => @sub_batch }

虽然这并不能严格回答您的问题,但我相信在ruby-on-rails标记内解释 Rails Way 更为重要,而不是以错误的方式帮助您。< / p>

答案 1 :(得分:0)

尝试文件渲染:

<div id="newBatch">
<%= render :file => 'directory/new_sub_batch.html.erb' %> 
</div>