Ruby on Rails Web应用程序控制器生成错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby on Rails Web应用程序控制器生成错误相关的知识,希望对你有一定的参考价值。

我正在观看一个视频系列,作者在其中使用RoR 4创建了一个简单的CMS,但是我目前安装了RoR3.x。 我将所有代码都跟在了“ T”后面,但是当我尝试在简单的CMS中创建一个简单的主题时,出现了错误。 所以我检查了log / production.log

我收到以下错误, TypeError (no implicit conversion of Symbol into String):

控制器代码如下所示:

def create
    # Instantiate a new object using form parameters

    # the below line should work with rails v3.x
    # @subject = Subject.new(params[:subject])

    @subject = Subject.new(subject_params)

    # Save the object
    if @subject.save
      # add flash hash
      flash[:notice] = "Subject created successfully."
      # if save succeeds, redirect to the index action
      redirect_to(:action => 'index')
    else
      # if save fails, redisplay the form so user can fix problems
      render('new')
    end
  end

我为主题新参数创建的私有方法如下所示

 private

    def subject_params
      # same as using "params[:subject]", except that it:
      # - raises an error if :subject is not present
      # - allows listed attributes to be mass-assigned
      params.require(:subject).permit(:name, :position, :visible)
    end
答案

作者告诉您,您需要将@subject = Subject.new(subject_params)更改为@subject = Subject.new(params[:subject])

params.require(:subject).permit(:name, :position, :visible)是Rails 4的一个功能,称为Strong Parameters 。 如果您不熟悉Rails,建议您使用作者使用的版本来缓解此类将来的版本问题。

以上是关于Ruby on Rails Web应用程序控制器生成错误的主要内容,如果未能解决你的问题,请参考以下文章

Rails Guides - Ruby on Rails 安全指南

Ruby On Rails视频教程

从头开始 Ruby On Rails Web 应用程序开发?

从 Ruby on Rails 应用程序向 Yahoo Web Search 提交搜索查询

Ruby on Rails - 从视图调用控制器方法

如何在 ruby​​ on rails 中获取控制器和操作列表?