通过AJAX请求调用的Rails表单部分不加载控制器变量

时间:2014-09-15 15:05:24

标签: jquery ruby-on-rails ajax renderpartial

正如标题所说,我正在尝试使用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请求的变量。我之前认为变量是可访问的,但它只是在部分之外的方法中定义。

1 个答案:

答案 0 :(得分:0)

部分需要以下划线开头,因此将其命名为 _partial_name.html.erb 然后你可以像这样使用渲染引用部分并传递你喜欢的任何局部变量

<%= render partial: "partial_name", locals: {headers: @headers} %>

标题将在部分内部作为局部变量提供。 只需将@headers更改为标题

即可

干杯