繁体   English   中英

如何在Ruby on Rails中使用Ajax更新两个参数?

[英]How to update two parameters using Ajax in Ruby on Rails?

我正在尝试使用Ajax更新此辅助函数:

def radio_buttons_collection(types, invoice_type)
  types_html = types.map do |type|
    content_tag :span, :class => "radio_option" do
      radio_button_tag("project[invoice_type]", type, type == invoice_type) + type
    end
  end
  safe_join(types_html)
end

但是,我很难在其中获取两个参数。

# get_invoice_types.js.erb:

$('#project_invoice_type').html("<%= escape_javascript(radio_buttons_collection(@types, @invoice_type)) %>");

# projects_controller.rb:

def get_invoice_types
  person = Person.find(params[:person_id])
  @types = person.address_types

  project = Project.find(params[:id])
  @invoice_type = project.invoice_type
end

# application.js:

$("#project_person_id").change(function() {
    $.ajax({
        url: '/projects/get_invoice_types',
        data: 'person_id=' + this.value,
        dataType: 'script'
    })
});

有人可以帮忙吗?

现在,只有@types参数可以正确传递。

谢谢你的帮助!

帮助Anezio Campos:

$("#project_person_id").change(function() {

    var person_id = $(this).val();
    var project_id = $("#project_id").val();
    $.ajax({
        url: '/projects/get_invoice_types',
        data: {person_id: person_id, id: project_id},
        dataType: 'script'
    })
});

尝试一下(如果可行)。

projects#get_invoice_types您尝试通过以下方式获取项目:

project = Project.find(params[:id])

但是您没有在ajax调用中传递id ,而是仅传递person_id

您还应该在ajax调用中传递id参数

添加一个id为project_id且值为project.id的hidden_​​field。

然后

$("#project_person_id").change(function() {
    $.ajax({
        url: '/projects/get_invoice_types',
        data: 'person_id=' + this.value + '&id=' + $("#project_id").value(),
        dataType: 'script'
    })
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM