2015-02-25 5 views
0

Я недавно изучал рубины и рельсы, чтобы создать веб-приложение, поэтому я слежу за стартовым руководством на веб-сайте rails.Отсутствует параметр в контроллере rails

я попал в точку, где я пытаюсь отправить форму в мою базу данных, и рельсы бросают эту ошибку:

ActionController :: ParameterMissing в ArticlesController # создать пары отсутствуют или значение пусто : aritcle

Вот код, который он имеет в виду:

class ArticlesController < ApplicationController 
def new 
end 

private 
def article_params 
    params.require(:aritcle).permit(:title, :text) 
end 

public 
def create 
    @article = Article.new(article_params) 

    @article.save 
    redirect_to @article 
end 

конца

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

Я еще не видел этого в другом месте, поэтому был бы очень признателен за любую помощь в этом.

Спасибо.

+3

Вы ошибаетесь 'article' в своем' params.require ... 'вызове' article_params'. –

+0

Итак, во-первых, хорошая практика заключается в том, чтобы поместить ваши общедоступные методы вверху, а затем использовать «личное» слово, чтобы объявить ваши частные методы. Что касается вашего вопроса, похоже, что хеш «статьи» передается контроллеру. С учетом сказанного было бы хорошо, если бы вы включили в свой вопрос свой шаблон и, возможно, журнал рельсов, чтобы узнать, что он получает в запросе. – fanta

+0

Хорошо, спасибо за совет, и я не могу поверить, что я не видел этого опечатка. Благодаря! – user3255626

ответ

0

Вот код после принятия @Jake Shorty и @fanta. Фиксация опечатки и повторная компоновка кода.

Преимущество использования ключевого слова private заключается в том, что порядок метода больше не имеет значения. Никаких шансов случайно сделать метод закрытым или публичным, если вы имели в виду другого.

class ArticlesController < ApplicationController 

    def new 
    end 

    def create 
    @article = Article.new(article_params) 
    @article.save 
    redirect_to @article 
    end 

    def article_params 
    params.require(:article).permit(:title, :text) 
    end 
    private :article_params 

end