在脚手架之后,Rails 4控制器似乎不正确

时间:2014-09-12 06:10:01

标签: ruby-on-rails ruby bootstrapping scaffold

对于培训,我创建了一个简单的rails应用程序。 然后

rails g scaffold Tache titre:string desc:text --skip-stylesheets
rake db:migrate
rails g bootstrap:install static

之后,我启动服务器,然后点击"添加Tache",我填写2个字段,然后我收到此错误:

param丢失或值为空:tach

   # Never trust parameters from the scary internet, only allow the white list through.
    def tach_params
      params.require(:tach).permit(:titre, :desc)
    end
end

所以我查看了taches_controller.rb,我注意到tache被截断了。 如果我改变:

      params.require(:tach).permit(:titre, :desc)

      params.require(:tache).permit(:titre, :desc)

有效。这行代码不是唯一一个截断最后一个字符的代码。

示例:

    def update
    respond_to do |format|
      if @tach.update(tach_params)
        format.html { redirect_to @tach, notice: 'Tache was successfully updated.' }
        format.json { render :show, status: :ok, location: @tach }
      else
        format.html { render :edit }
        format.json { render json: @tach.errors, status: :unprocessable_entity }
      end
    end
  end

你能告诉我为什么会这样被截断吗?我一定错过了什么,但我看不清楚。

此致

1 个答案:

答案 0 :(得分:3)

这发生在Rails尝试singularize复数taches的地方。你可以在Rails控制台中试试这个:

"taches".singularize
# => "tach"

您可以将此行为放在初始化程序(最好是config/initializers/inflections.rb)中来纠正此行为:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'tache', 'taches'
end

请务必重新启动Rails控制台和服务器。然后你可以再试一次:

"taches".singularize
# => "tache"