Screencast: Formulare mit verschachtelten Modellen
Fomulare mit verschachtelten Modellen lassen sich viel einfacher mit der Methode accepts_nested_attributes erstellen. Wie diese Methode benutzt werden kann, zeigt Ryan in seinem dieswöchigen Screencast.
Download:
Download (22.4 MB, 11:09)
Alternativer Download für iPod & Apple TV (15.2 MB, 11:09)
Resourcen:
- accepts_nested_attributes_for
- Nifty Generators
- Nested Model Forms Blog Post
- Full Episode Source Code
Quellcode:
rails surveysays script/generate nifty_layout script/generate nifty_scaffold survey name:string script/generate model question survey_id:integer content:text script/generate model answer question_id:integer content:string rake db:migrate
# models/survey.rb
class Survey < ActiveRecord::Base
has_many :questions, :dependent => :destroy
accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
end
# models/question.rb
class Question < ActiveRecord::Base
belongs_to :survey
has_many :answers, :dependent => :destroy
accepts_nested_attributes_for :answers, :reject_if => lambda { |a| a[:content].blank? }, :allow_destroy => true
end
# models/answer.rb
class Answer < ActiveRecord::Base
belongs_to :question
end
# surveys_controller.rb
def new
@survey = Survey.new
3.times do
question = @survey.questions.build
4.times { question.answers.build }
end
end
<!-- views/surveys/_form.html.erb -->
<% form_for @survey do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<% f.fields_for :questions do |builder| %>
<%= render "question_fields", :f => builder %>
<% end %>
<p><%= f.submit "Submit" %></p>
<% end %>
<!-- views/surveys/_question_fields.html.erb -->
<p>
<%= f.label :content, "Question" %><br />
<%= f.text_area :content, :rows => 3 %><br />
<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove Question" %>
</p>
<% f.fields_for :answers do |builder| %>
<%= render 'answer_fields', :f => builder %>
<% end %>
<!-- views/surveys/_answer_fields.html.erb -->
<p>
<%= f.label :content, "Answer" %>
<%= f.text_field :content %>
<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove" %>
</p>
Eingestellt am 11.01.2010 um 10:30
Kategorie: Tutorials
Suchen auf rubyonrails.de
Tags
2.0 2.1 Active-Record Ajax Buch Capistrano Enterprise Event Gewinnspiel Grundlagen IDE irb jQuery Kochbuch Konferenz Mac Mongrel OpenRoRBook OReilly OSX Passenger Phusion Plugin PragProgs Rails Rails 3 RailsKonf RailsWay RailsWayCon Release Release Candidate Routing Ruby Ruby 1.9 RubyGems rubyonrails.de Ryan Bates Scaffolding Screencast Script-Tip Security Tutorial Video Views WindowsAktuelle Artikel
- Script-Tip: URL auf Existenz prüfen
- Freikarte für die RailsWayCon 2010
- Screencast: Schutz vor XSS in Rails 3
- Phusion Passenger 2.2.11 erschienen
- Script-Tip: Summe eines Arrays ermitteln
- Vortrag zu Rails 3 von Yehuda Katz
- Hobo 1.0 veröffentlicht
- Screencast: Routes in Rails 3
- 5 freie Kapitel aus Ruby Best Practices
- Phusion Passenger 2.2.10 veröffentlicht
Artikel Archiv
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- May 2009
- April 2009
- March 2009
- February 2009
- December 2008
- November 2008
- August 2008
- July 2008
- June 2008
- May 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
Aktuelle Rails Version + Abhängigkeiten:
rails-2.3.5actionmailer (= 2.3.5, runtime)
actionpack (= 2.3.5, runtime)
activerecord (= 2.3.5, runtime)
activeresource (= 2.3.5, runtime)
activesupport (= 2.3.5, runtime)
rake (>= 0.8.3, runtime)
Rails auf Rubyforge
Rails auf Github
