Ich bin ein bisschen ein Rails-Neuling. Ich schreibe eine Couchstützen-App, verwende also keinen ActiveRecord für dieses Modell. Ich habe gerade herausgefunden, dass dasRails form_tag Formular schreiben - mit nicht-aktiven Rekordmodell
form_for(@model)
nicht funktioniert. Ich versuche herauszufinden, wie man form_tag benutzt - aber die meisten Beispiele beinhalten keine neuen & create actions.
Das ist falsch:
<h1>New article</h1>
<% form_tag new_article_url(@article), :method => :post do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :title %><br />
<%= f.text_field :title %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
<%= link_to 'Back', articles_path %>
Denn wenn ich meine Gurke Szenario laufen, ich diese bekommen:
Scenario: Create Valid Article # features/article.feature:16
Given I have no articles # features/step_definitions /article_steps.rb:8
And I am on the list of articles # features/step_definitions/webrat_steps.rb:6
/home/deploy/www/www.trackingplace.com/app/ccc/app/views/articles/new.html.erb:3: warning: multiple values for a block parameter (0 for 1)
from /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.3.3/lib/action_view/helpers/capture_helper.rb:36
When I follow "New Article" # features/step_definitions/webrat_steps.rb:18
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.error_messages (ActionView::TemplateError)
features/article.feature:19:in `When I follow "New Article"'
Aber ich verstehe nicht den Fehler, oder wie man es beheben.
Danke Ryan. Wenn ich mich entscheide, meine Modelle um Unterstützung für form_for zu erweitern - irgendwelche Vorschläge, wie man den kompletten Methodensatz bestätigt? –
Ich kenne keinen Weg in Rails 2, um den "vollständigen" Satz von notwendigen Methoden zu bestimmen. Wenn Sie einige Tests durchführen und method_missing Fehler nicht erhalten, ist es wahrscheinlich gut. Rails 3 wird einen dokumentierten Weg vorstellen, um dies zu tun und bietet eine etablierte Schnittstelle, die Sie im Modell definieren können. – ryanb
Ok - jetzt bin ich zu lahm, um herauszufinden, wie man auf die Formularwerte zugreifen kann! In meiner Steuerung habe ich: def erstellen @article = Article.new (: title => params [: Artikel]) Aber das funktioniert nicht. Ich bekomme Folgendes, wenn ich versuche, es intern zu verwenden, um die Klasse zu initialisieren: Und ich drücke "Create" # features/step_definitions/webrat_steps.rb: 14 undefined Methode 'downcase 'für {" title "=>" Spuds " }: HashWithIndifferentAccess (NoMethodError) Irgendwelche Hinweise? –