Rails获取渲染视图的转储

时间:2012-04-02 11:06:53

标签: ruby-on-rails ruby-on-rails-3 actionview

如何将视图的渲染响应包含在另一个视图中,但是转储。

像我目前正在使用的那样:

css: "<%= render :partial => "myurl/blah", :formats=> [:css], :layout => false %>",

(在渲染的js文件中,我正在创建一个json对象并包含其他各种文件..)

这里的回答是这样的:

css: "#utilities {width: 800px;}
#utilities p,
#utilities ul {margin-bottom: 1em;}
#utilities_scroll {height:500px; padding:0 10px 0 10px; overflow:scroll;}
#utilities_scroll_inner {width: 733px;}
#utilities-search-form {margin-top: 20px;} .. ."

但是我想要像这样转储它:

css: "#utilities {width: 800px;}\n#utilities p,\n#utilities ul {margin-bottom:  .. "

修改

回应:

css : <%= eval("render :partial => 'myurl/blah', :formats=> [:css], :layout => false").dump %>

它正在倾销html但略有不正确的方式,

请参阅rails控制台:

 a = "fdjasdlkfs 32$#%$#^$%^<>tv5$ ;'"  # => "fdjasdlkfs 32$#%$#^$%^<>tv5$ ;'" 
a.dump      #=> "\"fdjasdlkfs 32$#%$#^$%^<>tv5$ ;'\""

这是正确的方法,但是,在我所包含的行的html中,响应如下: (如果我在myurl / blah.css文件中有:"fdjasdlkfs 32$#%$#^$%^<>tv5$ ;'"

结果是

css : &quot;\&quot;fdjasdlkfs 32$#%$#^$%^&lt;&gt;tv5$ ;'\&quot;\n&quot;

看到差异,< > "在两种情况下都有不同的变换..(我需要按照第一种格式“

2 个答案:

答案 0 :(得分:1)

使用eval。我之前从未尝试过,但它会起作用。

尝试:

css : <%= eval("render :partial => 'myurl/blah', :formats=> [:css], :layout => false") %>

答案 1 :(得分:0)

感谢Vik的努力......但经过长时间的搜索,我最终得到了:

css : <%= JSON.dump(render :partial => "abc/url", :formats=> [:css], :layout => false).html_safe %>
css: <%= eval("render :partial => 'blah/blah', :formats=> [:css], :layout => false").dump.html_safe%>,
css: <%= eval("render :partial => 'blah/blah', :formats=> [:css], :layout => false").to_json.html_safe%>,

作为问题的解决方案.... 我刚开始使用Ruby,rails并发现奇怪的是没有关于所有这些小东西的正确文档...希望这有助于某人......

然而在我的情况下,我最终用于我的解决方案: (问题有点不同) 在控制器中:

@cssrender = JSON.dump(render_to_string(:file => "blah/blah", :layout => false , :formats =>[:css]))

仅在css :<%=@cssrender.html_safe%>

中查看