3

link_towithをremote:true に設定しています。私がやりたいのは、リクエストに追加の属性を追加することなので、これで試しました:

<script>
  $(document).ready(
      function(){
        $("#part_btn").bind("ajax:beforeSend",
            function(event, xhr, settings, data){
              settings.data += "&user_id=5"
            })
      })
</script>

user_idがコントローラーに送信されず、ログに記録するsetting.dataと が取得されるため、これが可能かどうかさえわかりませんnull&user_id=5

このようにできない場合、他に方法はありますか?

編集:

link_touser_id は実際には選択タグから取得され、選択した値を次のような追加データとして追加したかったため、追加のパラメーターを追加しませんでした。

settings.data += ("&user_id="+$("#register_user_id option:selected").val());

これは私link_toのようです:

  <%= text_field_tag :part_id, nil, :class => 'text_field', data: {source: autocomplete_parts_for_registers_registers_path} %>
  <%= link_to('toevoegen', '#!', id: 'part_btn', class: 'btn btn-small btn-success addbtn', style: "margin-top: 5px", data: {source: add_part_registers_path}, remote: true) %>
4

2 に答える 2

0

JavaScript のアプローチを採用するのではなく、次のルートでパラメーターを送信することを検討してlink_toください。

link_to "My link", some_path(user_id: 5), remote: true, method: :post

:user_idこれにより、 のコントローラのパラメータに 5 の値が追加されsome_pathます。

さらに、リンクの属性を使用して、必要data:なパラメーターを XHR リクエストに追加できます。

link_to "My link", id: "user_link", some_path, remote: true, method: :post, data: { params: { user_id: 123 }.to_param }

値を動的に変更する必要がある場合:

$("#user_select").change(function() {
  user_id = $(this).val();
  $("#user_link").data("params", "user_id=" + user_id);
})

実際、これは Rails が jquery_ujs から AJAX 値を送信するために行っていることとまったく同じように見えます。

user_id明らかに、サーバー側の値を確認してください。

于 2016-05-05T08:48:12.140 に答える