0

我不断收到一条错误消息:#<#:0x007ff5edcd5330> 的未定义方法 `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 %>

路线.rb

Grabapp::Application.routes.draw do
root :to => 'iosapps#index'
get "static_pages/home"

get "static_pages/add"

get "static_pages/about"

devise_for :users
resources :iosapps
resources :androidapps
4

2 回答 2

0

添加到您的 routes.rb 中:

resources :android

您的错误是因为您已要求 form_for 进行基于资源的路由!

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

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

于 2013-04-08T17:12:39.557 回答
0

您的模型和控制器不匹配(Android vs AndroidApp),因此需要在您的表单中指定正确的 url: <%= form_for(@android, validate: true, url: androidapps_path) do |f| %>

<%= form_for(@android, validate:true) do |f| %>使用表单的 HTML 标记自动设置正确的 HTTP 方法(通常是 POST 或 PUT)。它还假设您设置了一个/androids在 POST 和/androids/:idPUT 情况下调用的 url。因此,要使其正常工作,您需要告诉 rails 创建必要的路由。这是通过在中添加以下行来完成config/routes.rbresources :androids

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

您需要阅读更多有关路由及其工作原理的信息。在这里做:http: //guides.rubyonrails.org/routing.html

于 2013-04-08T18:20:48.497 回答