2013-08-11 3 views
-1

У меня есть контроллер Order и * модель Order * как это; -неинициализированным постоянная OrdersController

class OrderController < ApplicationController 

def new 
    @cart=current_cart 
    if @cart.items.empty? 
     flash[:error]="Your cart is empty" 
     redirect_to :back 
     return 
    end 

    @order=Order.new 

end 

def create 
    @order=Order.new 
end 

end 

Мой routes.rb имеет

get "order/new" 
resources :orders 

и форму, в новый.html.erb

<%= simple_form_for(@order, html: {class: 'form-horizontal control-group '}) do |f| %> 
<%= f.button :submit, "Place Order", class: "btn btn-large btn-primary" %> 
<% end %> 

У меня также есть другие поля в форме.

Но когда я отправить форму он выдает ошибку

неинициализированной постоянной OrdersController

Что случилось?

+0

но зачем мне это нужно? я создал контроллер с ** контроллером ** rails g method method – mrudult

+0

, тогда новое действие не будет отображаться. он дает ** неопределенный метод 'orders_path '** в файле simple_form_for. – mrudult

+2

Я думаю, что лучше придерживаться соглашения о рельсах и вместо того, чтобы фиксировать здесь и там, создавать новый контроллер, используя 'rails g controller orders', так что вам не придется менять свой код во многих разных местах. – vee

ответ

11

Ваше имя контроллера OrderController (сингулярным) и ошибка жалуется, что не может найти OrdersController (множественном). Вы также указали на своих маршрутах resources :orders (plural), которые должны совпадать с именем контроллера.

Переименуйте свой контроллер на OrdersController; это следует за соглашением Rails множественных имен контроллеров.