как передать множественную сущность HTTP post массива с Android на Rails 4

#java #android #ruby-on-rails #ruby #ruby-on-rails-4

#java #Android #ruby-on-rails #ruby #ruby-on-rails-4

Вопрос:

Приложение rails имеет вложенные формы, работает в Интернете и правильно сохраняется.Но у нас есть проблема в части Android, значения не сохранялись.

Вот код в rails:

 <%= nested_form_for @patient do |f| %>
<div class="title"> General Details </div>


<div class="name">
        <%= f.text_field :firstname, placeholder: 'FIRST NAME' %>
    <%= f.text_field :middlename, placeholder: 'MIDDLE NAME' %>
        <%= f.text_field :lastname, placeholder: 'LAST NAME' %>
</div>
<div>
    <%= f.label "Immunization" %>
    <%= f.fields_for :ph_immunizations do |ph| %>
    <%= render "ph_immunization_fields", :f => ph %>
  <% end %>
  <p><%= link_to_add_fields "  Add", f, :ph_immunizations %></p>
</div>
<% end %>
  

частичное:

 <p>
  <%= f.hidden_field :patient_id, value: @patient.id %>
  <%= f.collection_select(:immunization_id,Immunization.order(:description),:id,:description, 
              {include_blank: '', selected: field_value(:immunization_id) }, 
              class: "js-immunization js-select2", id: "immunization-select", "data-placeholder" => "Immunization") %>
  <%= f.link_to_remove "Remove" %>
</p>
  

Android:

 HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://xxxxx/patients");

List<NameValuePair> immunizatioValuePairs = new ArrayList();

immunizatioValuePairs.add(new BasicNameValuePair("ph_immunizations_attributes[1234567890123[immunization_id]]",  Integer.toString(1)));
immunizatioValuePairs.add(new BasicNameValuePair("ph_immunizations_attributes[1234567890124[immunization_id]]",  Integer.toString(2)));
               immunizatioValuePairs.add(new BasicNameValuePair("ph_immunizations_attributes[1234567890123[patient_id]]",  Integer.toString(98)));
               immunizatioValuePairs.add(new BasicNameValuePair("ph_immunizations_attributes[1234567890124[patient_id]]",  Integer.toString(98)));

 httppost.setEntity(new UrlEncodedFormEntity(immunizatioValuePairs));
 HttpResponse response = httpclient.execute(httppost);
 InputStream responseContent = response.getEntity().getContent();
  

Журналы Android на сервере:

 {"ph_immunizations_attributes"=>{"1234567890123"=>{"immunization_id"=>"1", "patient_id"=>"98"}, "1234567890124"=>{"immunization_id"=>"2", "patient_id"=>"98"}}}
  

Комментарии:

1. Это всего лишь некоторый шаблонный код, ни один из них не относится к конкретному Android. Пожалуйста, добавьте свой метод контроллера и форму params , которую вы получаете из браузера и «android». Вы можете записать их в файл журнала, если вы их уже не видите.

2. @Patru уже опубликовал код Android. Спасибо

3. Можете ли вы опубликовать parms хэш Android-post? Также было бы полезно действие контроллера (я думаю, это будет create ).