2010-10-19 32 views
0

我有這種形式和是或否的無線電選擇。 get_request_ids(歌曲)基本上給了我需要的id。這裏有一個更好的方式來做這個無線電邏輯

<% 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 

的PARAMS看起來像這樣

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

我可以分析該得到肯定的請求和無請求,但有一定是更好的方式...我覺得這是一個黑客

回答

1

這並不完全清楚你我想要做什麼,但有ar e兩件事,我注意到了那些看起來沒有必要的蝙蝠:

  • 該id已經在參數名稱中,不需要將它們也包含在該值中。
  • 在參數名稱中有一個「組」數組,當它看起來像你實際上想要一個散列。

因此,radio_button_tag鏈接可以簡化爲這樣:

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

這將簡化組參數去這樣的:

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

也給出了同樣的信息,以更簡化和可訪問的形式。它可能甚至不需要任何額外的解析。

但是,如果沒有更多的上下文,很難確切地說明實現它的最佳方式。如果您提供有關您正在進行的操作的更多詳細信息,則可能會得到更好的回覆。

相關問題