Должен быть лучший способ сделать эту радио логику - PullRequest
1 голос
/ 19 октября 2010

У меня есть эта форма и выбор радио «да» или «нет».Get_request_ids (song) в основном дает мне нужные мне идентификаторы.

<% form_tag '/somewhere' do -%>
  <% [ 'yes', 'no' ].each do |status| %>
    <%= radio_button_tag "group[]#{get_request_ids(song)}", "#{status}[#{get_request_ids(song)}]" %>
    <%= status.humanize %>
  <% end %>
 <tr><td><%= submit_tag 'Save' %></td></tr>
<% end %>

HTML выглядит так

<input id="group_1,2_yes12" name="group[]1,2" value="yes[1,2]" type="radio">
 Yes                                            
<input id="group_1,2_no12" name="group[]1,2" value="no[1,2]" type="radio">
 No


<input id="group_3,6,7_yes367" name="group[]3,6,7" value="yes[3,6,7]" type="radio">
  Yes                   
<input id="group_3,6,7_no367" name="group[]3,6,7" value="no[3,6,7]" type="radio">
   No

параметры выглядят так

 group"=>[{"1,2"=>"yes[1,2]", "3,6,7"=>"no[3,6,7]"}]

Я могу разобрать это, чтобы получить запросы да и нет, но должен быть лучший способ ... Я чувствую, что это взлом

1 Ответ

1 голос
/ 20 октября 2010

Мне не совсем понятно, что вы пытаетесь сделать, но есть две вещи, которые я сразу заметил, которые выглядят ненужными:

  • Идентификаторы уже есть в имени параметра,нет необходимости включать их в значение.
  • У вас есть массив "group" в имени параметра, когда кажется, что вы действительно хотите хеш.

Итак,ссылка на radio_button_tag может быть упрощена до этого:

<%= radio_button_tag "group[#{get_request_ids(song)}]", status %>

Что упростит групповой параметр до этого:

"group"=>{"1,2"=>"yes", "3,6,7"=>"no"}

Это дает ту же информацию в гораздо более упрощенной и доступной форме,Это может даже не нуждаться в дополнительном разборе вообще.

Но без некоторого дополнительного контекста трудно сказать точно, каков наилучший способ реализации этого.Если вы предоставите более подробную информацию о том, что вы делаете, вы можете получить лучший ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...