正如标题所说,我正在尝试使用AJAX请求加载表单部分;我的表单中的一个字段需要控制器中的变量,因此它可以创建选择下拉菜单。如果我直接在视图中渲染部分,它会访问变量,但是当我分离部分并尝试通过AJAX请求加载它时,它不知道如何找到变量。
我已经尝试按照found here的答案(将其作为局部变量赋予部分),但它仍然不起作用。
@header 是未加载的变量。
部分:
= simple_form_for(Constraint.new, html: {:multipart => true, autocomplete: "off", :class=> "form-horizontal" }, remote: true, :authenticity_token => true) do |f|
div.profile-details
br
= f.select :header, @headers.each{|header|} , input_html:{:class => "user-update"}, label: "Header", :prompt => "Select a Header"
br
= f.button :submit, "Save Constraint"
加载部分<。strong>的.js文件:
$(".newConditionContainer").append('<%= escape_javascript(render 'projects/rulesConstraintsInput')%>');
更新:
我最终在控制器方法中定义了调用js请求的变量。我之前认为变量是可访问的,但它只是在部分之外的方法中定义。
答案 0 :(得分:0)
部分需要以下划线开头,因此将其命名为
_partial_name.html.erb
然后你可以像这样使用渲染引用部分并传递你喜欢的任何局部变量
<%= render partial: "partial_name", locals: {headers: @headers} %>
标题将在部分内部作为局部变量提供。 只需将@headers更改为标题
即可干杯