我正在运行rails 4.0.4。我有一个表单,我正在使用一个部分来添加字段的子集。用户可以选择删除这些字段,并在页面上显示其他字段后将其替换。如果他们想要撤消他们的决定,我希望能够重新添加这些字段。
javascript文件中没有渲染(对于js.erb文件来说这似乎很奇怪)。我已经使用以下内容将文件的文本读入变量。
var master_quantity = "<%= data='';File.open("#{Rails.root}/app/views/shared/_a2a_master_quantity.html.erb","r").each_line{|x| data+=x};data %>";
不幸的是,escape_javascript似乎也没有出现在asests文件夹中,因此我无法使用此字符串,因为它会破坏javascript。
任何人都有任何关于清理字符串或其他方法的建议,以便将部分内容放入我的javascript中吗?
答案 0 :(得分:1)
你可以试试,
controller = ActionController::Base.new
controller.send(:render_to_string, '/shared/a2a_master_quantity')
无论你传递给render_to_string
以上的是该方法的参数。
对于'/ shared',您可能需要也可能不需要'/'。
答案 1 :(得分:0)
如果我理解你的问题,并且部分永远不会改变,你将不需要从服务器获取它。只需将其隐藏在CSS中(例如使用JQuery的$('#selector').hide()
)
另一方面,如果您需要Ruby在每次用户恢复时自定义部分,您可以从浏览器向服务器发送AJAX请求以请求新版本的部分。
在适当的控制器操作中添加一行,以呈现您的部分:
render :partial => 'a2a_master_quantity' and return if request.xhr?
在JavaScript中创建一个合适的XML HTTP请求以获取此部分(例如JQuery的$.ajax()
。)
然后使用JavaScript将其添加到适当位置的DOM中。