Как передать объект в тег переключателя? - PullRequest
7 голосов
/ 11 декабря 2011

Для своей формы я использую мою Product модель:

class Product < ActiveRecord::Base
  attr_accessible :purchase_date, :send_to_data
end

В моей форме :purchase_date работает правильно, когда я создаю несколько продуктов, но также хочу, чтобы radio_button_tag делал то же самое:

<%= form_tag create_multiple_products_path, :method => :post do %>

  <%= date_select("product", "purchase_date")  %>

   <%= radio_button_tag(:send_to_data, 1) %>
   <%= radio_button_tag(:send_to_data, 0) %>


  <% @products.each_with_index do |product, index| %>
     <%= fields_for "products[#{index}]", product do |up| %>
        <%= render "fields", :f => up %>
     <% end %>
  <% end %>

  <%= submit_tag "Done" %>
<% end %>

Это не сработало для меня, моя база данных не помечена как ложная или истинная.

Я думаю, что проблема заключается в параметрах "send_to_data".В отличие от "purchase_date" он не находит объект (продукт).

{"product"=>{"purchase_date(2i)"=>"12", "purchase_date(3i)"=>"11", "purchase_date(1i)"=>"2011"},
"send_to_data"=>"1", 
"products"=>{"0"=>{"product_name"=>"Test", "price"=>"23", "product_store"=>"13", "exact_url"=>""},
"1"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""},
"2"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""},
"3"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""},
"4"=>{"product_name"=>"", "price"=>"", "product_store"=>"", "exact_url"=>""}}, "commit"=>"Done"}

Есть ли способ сопоставить его с объектом, как это делает дата покупки?

Ответы [ 2 ]

8 голосов
/ 14 декабря 2011

Насколько я понимаю, вы путаете FormHelper и FormTagHelper .Вы используете помощник по тегу формы, который, согласно документации

(FormTagHelper), предоставляет ряд методов для создания тегов формы, которые не зависят от объекта Active Record, назначенного шаблону, как FormHelper.

Это означает, что для формы на основе ActiveRecord вам необходимо использовать FormHelper (и его вспомогательный метод radio_button).

Код с radio_button_tag вспомогательный тег формы

<%= radio_button_tag(:send_to_data, 1) %>
<%= radio_button_tag(:send_to_data, 0) %>

создает следующий HTML-код:

<input id="send_to_data_1" name="send_to_data" type="radio" value="1" />
<input id="send_to_data_0" name="send_to_data" type="radio" value="0" />

И код с radio_button помощник по формам

<%= radio_button("product", :send_to_data, 1) %>
<%= radio_button("product", :send_to_data, 0) %>

создает:

 <input id="product_send_to_data_1" name="product[send_to_data]" type="radio" value="1" />
 <input id="product_send_to_data_0" name="product[send_to_data]" type="radio" value="0" />   

Надеюсь, это поможет!

3 голосов
/ 11 декабря 2011

проверьте эту страницу form_helpers сначала, здесь правильный путь должен быть

<%= radio_button_tag(:send_to_data, 1) %>
<%= radio_button_tag(:send_to_data, 0) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...