Forms contains collections ... of child-objects

hi all

in my app i have two models (and others of course). article and
article_price and article has many article_prices.
now i would like to create a view for editing all articles and its
current price in a table. when the the price is edited, a new price
with the current params should automatically be add.
the partial wasn’t the problem:

<% for @article in @articles %> <% @price = @article.current_price %> <%= text_field( 'article[]', 'name', :size => 0) %> <%= text_field 'article[]', 'unit', :size => 5 %> <%= text_field_tag "article_price[#{@article.id}][price]", (@price.price if @price), :size => 5 %> <%= text_field_tag "article_price[#{@article.id}][unit_quantity]", (@price.unit_quantity if @price), :size => 8 %> <%= text_field_tag "article_price[#{@article.id}][order_number]", (@price.order_number if @price), :size => 8 %> [.......] <% end %>

the user can edit every article an its current price in one row.
but the big question ist now, how can i access every article_price of
each article?
the normal solution for collection (update(params[:item].keys,
params[:item].values) doesn’t work here because i must integrate the
child-element and have to test if it was edited. the first idea of an
update action looks like this:

#i try to iterate over every price. the id isn’t the price id but the
id of the article, so i can identify the right article

params[:article_price].each do
|price|
article = Article.find(price.first) #first because of an array?
current_price = article.current_price
if !price[2][:price].empty?
new_price = ArticlePrice.new(:price => price[2][:price],
:unit_quantity => price[2][:unit_quantity],
:order_number => price[2][:order_number],
:start => Time.today)
article.add_price(new_price) #own method, for adding a price
end
end
[…]

but thats not working and of course not elegant.
i haven’t found any other problems like this, but i guess you know the
answer…

thanks a lot.
benni

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs