Rails form_tag form writing - avec un modèle d'enregistrement non actif
Je suis un peu de l'un des Rails de débutant. Je suis en train d'écrire un couchrest-application rails, alors je ne suis pas à l'aide de activerecord pour ce modèle. Je viens de comprendre que cela signifie que
form_for(@model)
ne fonctionne pas. Je suis en train de travailler sur la façon d'utiliser form_tag -- mais la plupart des exemples qui n'impliquent pas de nouveau & créer des actions.
C'est faux:
<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 %>
Parce que quand je lance mon Concombre scénario, j'obtiens ceci:
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"'
Mais je ne comprends pas l'erreur, ou comment résoudre le problème.
source d'informationauteur Pauli Price
Vous devez vous connecter pour publier un commentaire.
La
form_tag
méthode ne permet pas d'utiliser un générateur de formulaire, de sorte que vous ne pouvez pas utiliser le "f" de la variable dans le bloc de formulaire. Au lieu def.error_messages
vous devez utilisererror_messages_for
etc.Cela dit, vous peut utilisation
form_for
non ActiveRecord objets, ils ont juste besoin de répondre à certaines de leurs méthodes. Veiller à ce que ces méthodes sont implémentées dans le modèle Article.id
new_record?
to_param
errors
C'est juste une supposition de ce qui est nécessaire, il peut y en avoir d'autres. Si ceux-ci sont mis en œuvre et de se comporter comme ActiveRecord ne vous devriez être en mesure d'utiliser
form_for
.