html - form_for called in a loop overloads IDs and associates fields and labels incorrectly -


rails likes giving of fields same ids when generated in loop, , causes trouble.

<% current_user.subscriptions.each |s| %>   <div class="subscription_listing">     <%= link_to_function s.product.name, "toggle_delay(this)"%>     in <%= s.calc_time_to_next_arrival %> days.     <div class="modify_subscription">         <%= form_for s, :url => change_subscription_path(s) |f| %>             <%= label_tag(:q, "days delay:") %>             <%= text_field_tag(:query) %>             <%= check_box_tag(:always) %>             <%= label_tag(:always, "apply delay future orders") %>             <%= submit_tag("change") %>         <% end %>         <%= link_to 'destroy', s, :confirm => 'are sure?', :method => :delete %>     </div>   </div> <% end %> 

produces

<div class="subscription_listing">     <a href="#" onclick="toggle_delay(this); return false;">pasta</a>     in 57 days.     <div class="modify_subscription">         <form accept-charset="utf-8" action="/subscriptions/7/change" class="edit_subscription" id="edit_subscription_7" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="s5ljffuzmbemksrez8b3klvmdwn/pgmdryxhp25+qc4=" /></div>              <label for="q">days delay:</label>             <input id="query" name="query" type="text" />             <input id="always" name="always" type="checkbox" value="1" />             <label for="always">apply delay future orders</label>             <input name="commit" type="submit" value="change" /> </form>     <a href="/subscriptions/7" data-confirm="are sure?" data-method="delete" rel="nofollow">destroy</a>     </div>    </div>   <div class="subscription_listing">     <a href="#" onclick="toggle_delay(this); return false;">gummy bears</a>     in 57 days.     <div class="modify_subscription">         <form accept-charset="utf-8" action="/subscriptions/8/change" class="edit_subscription" id="edit_subscription_8" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="s5ljffuzmbemksrez8b3klvmdwn/pgmdryxhp25+qc4=" /></div>             <label for="q">days delay:</label>             <input id="query" name="query" type="text" />              <input id="always" name="always" type="checkbox" value="1" />             <label for="always">apply delay future orders</label>             <input name="commit" type="submit" value="change" /> </form>     <a href="/subscriptions/8" data-confirm="are sure?" data-method="delete" rel="nofollow">destroy</a>     </div>   </div> 

and that's problem because no matter "apply delay future orders" select helpfully checks first box me. how can override id without doing ugly , un-rails-like?

you should able override id passing in option

text_field_tag(:query, '', :id=>'unique id') check_box_tag(:always, '1', false, :id=>'unique_id') 

for instance

<% current_user.subscriptions.each_with_index |s,i| %>   <div class="subscription_listing">     <%= link_to_function s.product.name, "toggle_delay(this)"%>     in <%= s.calc_time_to_next_arrival %> days.     <div class="modify_subscription">         <%= form_for s, :url => change_subscription_path(s) |f| %>             <%= label_tag("query_#{i}", "days delay:") %>             <%= text_field_tag(:query, '', :id=>"query_#{i}") %>             <%= check_box_tag(:always, '1', false, :id=>"always_#{i}") %>             <%= label_tag("always_#{i}", "apply delay future orders") %>             <%= submit_tag("change") %>         <% end %>         <%= link_to 'destroy', s, :confirm => 'are sure?', :method => :delete %>     </div>   </div> <% end %> 

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -