Rails form_tag表单写入 – 具有非活动记录模型

我有点像Rails的新手。 我正在写一个couchrest-rails应用程序,所以我没有使用activerecord这个模型。 我只是想通了那就意味着

form_for(@model) 

不行。 我正在尝试研究如何使用form_tag – 但大多数示例都不涉及new和create操作。

这是错的:

 

New article

:post do |f| %>


因为当我运行我的Cucumber场景时,我得到了这个:

 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"' 

但我不明白错误,或如何解决它。

form_tag方法不使用表单构建器,因此您不能在表单块中使用“f”变量。 而不是f.error_messages你必须使用error_messages_for等。

 <% form_tag new_article_url(@article), :method => :post do %> <%= error_messages_for :article %> 

<%= label :article, :title %>
<%= text_field :article, :title %>

<%= submit_tag 'Create' %>

<% end %>

也就是说,您可以form_for与非ActiveRecord对象一起使用,它们只需要响应某些方法。 确保在Article模型中实现这些方法。

  • id
  • new_record?
  • to_param
  • errors

这只是猜测需要什么,可能还有其他人。 如果实现了这些并且行为类似于ActiveRecord,那么您应该能够使用form_for