2015-12-18 3 views
0

Я изучаю Ruby on Rails и начинаю делать это небольшое приложение для блога через http://guides.rubyonrails.org/getting_started.html#showing-articles. Теперь я в 5.10, когда мне нужно добавить проверку в форму так, если пользователь добавляет Tittle с длиной короче 5.Ошибка Ruby on Rails (блог) в 5.10

Так что это мой articles_controller.rb:

class ArticlesController < ApplicationController 
    def index 
     @articles = Article.all 
    end 

    def show 
     @article = Article.find(params[:id]) 
    end 

    def new 
    end 

    def create 
     #render plain: params[:article].inspect 

     #@article = Article.new(params[:article]) 

     @article = Article.new(article_params) 

     #@article.save 
     if @article.save 
      redirect_to @article 
     else 
      render 'new' 
     end 

     redirect_to @article 
    end 

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

И с этой точки зрения у меня есть ошибки (new.html.erb):

<%= form_for :article, url: articles_path do |f| %> 

    <% if @article.errors.any? %> 
    <% end %> 

    <p> 
    <%= f.label :title %><br> 
    <%= f.text_field :title %> 
    </p> 

    <p> 
    <%= f.label :text %><br> 
    <%= f.text_area :text %> 
    </p> 

    <p> 
    <%= f.submit %> 
    </p> 

<% end %> 

<%= link_to 'Back', articles_path %> 

Это ошибка, я получаю:

enter image description here

Я новичок в Ruby и рельсах, поэтому надеюсь, что смогу помочь.

+1

Marek Lipka дал вам правильный ответ. Несколько других вещей - в Ruby (и Rails) считается хорошим стилем использования отступов, состоящим из 2 пробелов (вместо 4). Кроме того, в твоем действии действия не требуется вторая статья «redirect_to @». –

+0

Да, сейчас это работает, спасибо Марек Липка. Но могу ли я объяснить, почему мне нужна эта линия или что она делает? –

+0

Почему он решил использовать отступы, состоящие из 2 пробелов? –

ответ

2

Вы не инициализировали переменную экземпляра @article, но попробуйте использовать ее в new. Вы должны иметь:

def new 
    @article = Article.new 
end 
Смежные вопросы