我知道这是一个超级noobie问题,我现在正在学习rails。我正在按照Rails入门指南进行操作,并且我已经正确地遵循了每一步,但是当我进入" The First Forms"部分。它似乎一直在文章#new"中给我一个" NoMethodError。错误信息。这是完整的错误:
undefined method `form_with' for #<#<Class:0x007f31e8904248>:0x007f31dc290b70>
Did you mean? form_tag
以下是表单代码:
<%= form_with scope: :articles, local: true do |form| %>
<p>
<%= form.label :title %><br>
<%= form.text_field :title %>
</p>
<p>
<%= form.label :text %><br>
<%= form.text_area :text %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
我似乎无法理解为什么它无法正常工作。您认为这个问题是什么?我看过几个答案,说使用form_for,但这也给了我一个错误。
另外,我正在使用:
Rails: 5.0.6
提前致谢:)
答案 0 :(得分:2)
如果您使用的是rails 5.1,则form_for / form_tag将替换为form_with
请验证您的导轨版本?在你的情况下,它是5.0.6,这就是为什么它抛出错误
如果低于5.1,则使用表格标签或form_for
尝试 1)form_for
"world"
2)form_tag
const
form_tag和form_for被软弃用,将来它们将被form_with替换。
如果您没有基础模型,则使用form_tag。
div.container > div.clear > nav
当你有一个模型时,你使用了form_for。
<%= form_for @article do |form| %>
<p>
<%= form.label :title %><br>
<%= form.text_field :title %>
</p>
<p>
<%= form.label :text %><br>
<%= form.text_area :text %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
正如您所看到的,我们使用form_for表单构建器字段助手,但我们不使用form_tag。因此两种形式的语法都不同。
form_with不是这种情况,因为我们一直使用表单构建器。
form_with没有模型:
<%= form_tag articles_path do %>
<p>
<%= label_tag :title %><br>
<%= text_field_tag :title %>
</p>
<p>
<%= label_tag :text %><br>
<%= text_field_tag :text %>
</p>
<p>
<%= submit_tag "submit" %>
</p>
<% end %>
form_with with model:
<%= form_tag users_path do %>
<%= text_field_tag :email %>
<%= submit_tag %>
<% end %>
设置模型参数时,范围和URL会自动从中派生。此行为类似于form_for。
答案 1 :(得分:1)
我相信在Rails 5.1中引入了form_with
。您正在使用Rails 5.0.6。在您考虑更新rails之前,我会先尝试将:articles
更改为单数:article
。它可以这么简单。