【问题标题】:Ruby on Rails guide (blog) error in 5.105.10 中的 Ruby on Rails 指南(博客)错误
【发布时间】:2015-12-18 08:17:16
【问题描述】:

我正在学习 Ruby on Rails,并开始通过 http://guides.rubyonrails.org/getting_started.html#showing-articles 制作这个小博客应用程序。 现在我在 5.10,我需要向表单添加验证,所以如果用户添加长度小于 5 的标题。

这是我的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 %>

这是我得到的错误:

我是 Ruby 和 Rails 的新手,所以希望能得到一些帮助。

【问题讨论】:

  • Marek Lipka 给了你正确的答案。其他几件事 - 在 Ruby(和 Rails)中,使用缩进被认为是一种很好的风格,由 2 个空格(而不是 4 个)组成。此外,在您的创建操作中不需要第二个redirect_to @article
  • 是的,现在可以使用了,感谢 Marek Lipka。但是我能解释一下为什么我需要这条线或它的作用吗?
  • 为什么考虑使用由 2 个空格组成的缩进?
  • @GillisWerrebrouck 我已经给你解释过了。您需要这个,因为它初始化了 @article 变量,这是您在视图中需要的。
  • 2 空格缩进只是 Ruby 中的一种约定,几乎所有专业的 Ruby 编程人员都遵循。

标签: ruby ruby-on-rails-4.1


【解决方案1】:

您没有初始化@article 实例变量,但您尝试在new 视图中使用它。你应该有:

def new
  @article = Article.new
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多