0

このヘルパー関数を 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

ただし、そこに2つのパラメーターを取得するのに問題があります。

# 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パラメーターのみが適切に渡されます。

助けてくれてありがとう!

4

2 に答える 2

2

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'
    })
});

動作する場合は、試してください。

于 2013-05-25T14:08:25.310 に答える
1

あなたprojects#get_invoice_typesがプロジェクトを取得しようとしている場合:

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

しかし、あなたはidあなたのajax呼び出しを渡していません。あなたは渡しているだけですperson_id

idまた、ajax呼び出しでパラメーターを渡す必要があります

project_ididと 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'
    })
});
于 2013-05-25T12:48:35.293 に答える