2013-04-08 7 views
0

Я продолжаю получать сообщение об ошибке: undefined method `androids_path 'для # < #: 0x007ff5edcd5330>. Говорят, что ошибка указана в строке 1 в new.html.Как исправить ошибку неопределенного метода в рельсах?

Название модели 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

Как выглядит ваш файл маршрутов? –

+0

только что включенные маршруты.rb – sharataka

+2

Вам нужно добавить 'resources: android' – RadBrad

ответ

0

добавить на routes.rb:

resources :android 

Вы ошибаетесь, потому что вы попросили form_for выполнить маршрутизацию на основе ресурсов!

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

Но вы не указали маршрутизацию на основе ресурсов, необходимую для ее работы!

0

Ваша модель и контроллер не совпадают (Android против AndroidApp), поэтому необходимо указать правильный URL в форму: <%= form_for(@android, validate: true, url: androidapps_path) do |f| %>

<%= form_for(@android, validate:true) do |f| %> автоматически настраивает правильный метод HTTP (как правило, POST или PUT) с HTML-разметка для формы. Он также предполагает, что у вас установлен URL-адрес под названием /androids в случае POST и /androids/:id в случае PUT. Поэтому для этого вам нужно указать рельсы для создания необходимых маршрутов. Это делается путем добавления следующей строки в config/routes.rb, а именно: resources :androids.

Именно поэтому лучше совместить имена моделей и контроллеров, Rails автоматически может вывести правильные действия контроллера на основе имени модели.

Вам нужно еще немного узнать о маршрутизации и о том, как это работает. Сделайте это здесь: http://guides.rubyonrails.org/routing.html