Sklep - koszyk

Rozwiązując inny problem natrafiłam na rozwiązanie problemu przedstawionego powyżej, wystarczyło użyć “object”, pewnie ma to jaką fachową nazwę :slight_smile:

[code]

<%= @product.name %>


<%= @product.description %>


Opcje wyceny

<%= form_for @product, :url => { :controller => “cart”, :action => “add” } do |f| %>

<%= f.hidden_field :id %>
<%= f.hidden_field :name %>

<% f.fields_for :options do |b| %>

    <div>
    <%= b.label b.object.name %>
    <%= b.hidden_field :name %>
    <%= b.select :suboptionid, options_from_collection_for_select(b.object.suboptions, 'id', 'name') %>
    </div>

<% end %>

<%= f.submit 'dodaj do koszyka'%>

<% end %>[/code]
Fajnie co?

<%= b.label b.object.name %> <%= b.hidden_field :name %>
Przez .hidden_field przekazuje w params nazwę Opcji w celu późniejszego wykorzystania, no ale trzeba wyświetlić dla użytkownika jakiś label dla pola select, i tu był problem, a wystarczy użyć “b.object.name”.

To samo dla select:

<%= b.select :suboptionid, options_from_collection_for_select(b.object.suboptions, 'id', 'name') %>

aby przekazać kolekcje wystarczy “b.object.suboptions”.

Myślę ze takie rozwiązanie problemu jest ok, prościej i czytelniej już się chyba nie da.

Aha, dzięki za materiały, jak skończę z “bieganiem” to na pewno się zagłębię w nie :slight_smile: