2013-04-08 93 views
0

我不断收到一个错误:undefined方法`androids_path'为#<#:0x007ff5edcd5330>。这是说错误在new.html的第1行。如何解决未定义的方法在rails中的错误?

模型的名称是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

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 
+0

您的路线文件的外观如何? – 2013-04-08 15:46:51

+0

刚刚包含routes.rb – sharataka 2013-04-08 15:48:22

+2

您需要添加'resources:android' – RadBrad 2013-04-08 15:49:08

回答

0

添加到您的routes.rb:

resources :android 

你是错误的,因为你问form_for做基于资源的路由!

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

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

0

你的模型和控制器不匹配(安卓VS AndroidApp),所以需要在表格指定正确的网址:与 <%= form_for(@android, validate: true, url: androidapps_path) do |f| %>

<%= form_for(@android, validate:true) do |f| %>自动设置正确的HTTP方法(通常是POST或PUT)表单的HTML标记。它还假设您在POST的情况下设置了一个名为/androids的url,在PUT的情况下设置了/androids/:id。所以为了这个工作,你需要告诉轨道来创建必要的路线。这通过在config/routes.rb中添加以下行来完成,即resources :androids

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

您需要详细了解路由及其工作原理。在此处执行此操作:http://guides.rubyonrails.org/routing.html

相关问题