Ruby on rails 如何修复rails中未定义的方法错误?

Ruby on rails 如何修复rails中未定义的方法错误?,ruby-on-rails,Ruby On Rails,我一直收到这样一个错误:未定义的方法“androids_path”用于#。它说错误在new.html的第1行 模型的名称是Android,位于Android.rb。有关于如何解决这个问题的建议吗 在androidapps_controller.rb中: def new @android = Android.new end 在new.html中,我有: <%= form_for(@android, validate:true) do |f| %> <% @andro

我一直收到这样一个错误:未定义的方法“androids_path”用于#。它说错误在new.html的第1行

模型的名称是Android,位于Android.rb。有关于如何解决这个问题的建议吗

在androidapps_controller.rb中:

def new
    @android = Android.new
end
在new.html中,我有:

  <%= form_for(@android, validate:true) do |f| %>
<% @android.errors.full_messages.each do |msg| %>

<li><%= msg %></li>
<% end %>

  <p>
    <%= f.label :title %><br />
    <%= f.text_field :title %>
</p>

<%= f.submit %>
<% end %>
添加到routes.rb:

resources :android
您的错误是因为您要求form_执行基于资源的路由

<%= form_for(@android, validate:true) do |f| %>


但是您没有定义使其工作所需的基于资源的路由

您的型号和控制器不匹配(Android与AndroidApp),因此需要在表单中指定正确的url:

自动为表单设置带有HTML标记的正确HTTP方法(通常为POST或PUT)。它还假设您在POST中设置了一个名为
/androids
的url,在PUT中设置了
/androids/:id
。因此,要使这一点起作用,您需要告诉rails创建必要的路由。这是通过在
config/routes.rb
中添加以下行来完成的,即
resources:androids

这就是为什么最好匹配模型和控制器名称,Rails可以根据模型名称自动推断出正确的控制器操作


你需要阅读更多关于路由和它是如何工作的。在此处执行:

您的routes文件看起来像什么?只是包含routes.rb您需要添加“resources:android”,您可能希望添加
url
作为一个选项,以形成您的应用程序@RadBrad,你应该把你的评论作为答案。
<%= form_for(@android, validate:true) do |f| %>