Natrafiłem dzisiaj na bardzo dziwną rzecz - albo mam totalne zaćmienie umysłowe albo to jest jakiś bug - nie mam pojęcia o co chodzi.
Prosty przykład
[code]# article.rb
model Article < ActiveRecord::Base
def assets=(value)
Rails.logger.info “Assets: #{assets.inspect}”
end
end
new.html.erb
<% form_for :article do |f| %>
<%= f.text_field “assets[]” %>
<%= f.text_field “assets[]” %>
<%= f.submit %>
<% end %>[/code]
Po wysłaniu takiej formy dostaję takie params:
{"article"=>{"assets"=>[nil, nil]}, "commit"=>"Save changes"}
w logach: Assets: [nil, nil]
Jeżeli nie wrzucać tych pól w “article”, to wszystko jest ok:
[code]<% form_for :article do |f| %>
<%= text_field_tag “assets[]” %>
<%= text_field_tag “assets[]” %>
<%= submit_tag “Save changes” %>
<% end %>
params:
{“commit”=>“Save changes”, “assets”=>[“tekst”, “inny”]}[/code]
O co chodzi? Bo w tym momencie zwątpiłem
Zawsze mogę oczywiście użyć chociażby nested attributes i generować to jako hashe:
:assets => {"new_1" => {:attr1 => "costam"}}
Tylko dlaczego ta tablica się nie przekazuje?