2014-12-11 8 views
-3

Я застрял на этой ошибке, и я не могу понять, что случилось.ActiveModel :: ForbiddenAttributesError Ruby

class TicketsController < ApplicationController 
    def new 
    end 

    def create 
    @tickets = Newticket.new(params[:tickets]) 

    @tickets.save 
    redirect_to @tickets 
    end 

    private 

    def tickets_params 
    params.require(tickets).permit(:title, :text) 
    end 
end 
+0

где определяется метод 'билетов'? –

+0

Вы посмотрели на другие [другие вопросы и ответы] (http://stackoverflow.com/search?q=%5Bruby%5D+ActiveModel%3A%3AForbiddenAttributesError), обсуждая это? Посмотрите на верхние связанные с правой стороны этой страницы тоже. –

+0

Возможный дубликат [ActiveModel :: ForbiddenAttributesError при создании нового пользователя] (http://stackoverflow.com/questions/17335329/activemodelforbiddenattributeserror-when-creating-new-user) – Carpetsmoker

ответ

2

Вы должны пройти ticket_params методу new

def create 
    # your code 
    @tickets = Newticket.new(params[:tickets]) 

    # you should use 
    @tickets = Ticket.new(ticket_params) #if your model is named Ticket 
    @tickets = Newticket.new(ticket_params) #if your model is named Newticket 
    @tickets.save 
    redirect_to @tickets 
end 

private 
    def tickets_params 
     params.require(:tickets).permit(:title, :text) # if your model is named Ticket 
     params.require(:newtickets).permit(:title, :text) # if your model is named Newticket 
    end 
end 

вы должны создать метод ticket_params, который разрешающее :tickets значения из params хэш, и вы сказали с permit какие клавиши разрешены в params[:tickets] хэш объект. Вы положили :title, :text. Проблема заключалась в том, что вы используете params[:ticket], у которого нет разрешенных параметров.

+2

Я думаю, что это должно быть Ticket.new (ticket_params) –

+0

Если модель называется «Ticket», но он попросил модель «Newticket» – Nermin

+0

, я не думаю, что у него есть билет и модель Newticket (кстати, она будет называться NewTicket). –

0

@tickets = Newticket.new (PARAMS [Билеты])

Newticket.new, что одна была причиной проблемы. Я определил этот метод неправильно ранее при создании контроллеров, которые я назвал Newticket, в то время как я должен был назвать его билетами.

Спасибо за вход.

Смежные вопросы