Ruby on rails RubyonRails控制器语法

Ruby on rails RubyonRails控制器语法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是Rails新手,刚刚完成了我的第一个solo项目,但我似乎遇到了一个语法错误,一个常量没有初始化。我得到了几个,但每个似乎都有不同的原因……我不太确定我是如何一直得到相同的错误和不同的原因: uninitialized constant DatastringsController::Datastrings 数据串控制器: class DatastringsController < ApplicationController def new end def creat

我是Rails新手,刚刚完成了我的第一个solo项目,但我似乎遇到了一个语法错误,一个常量没有初始化。我得到了几个,但每个似乎都有不同的原因……我不太确定我是如何一直得到相同的错误和不同的原因:

uninitialized constant DatastringsController::Datastrings
数据串控制器:

class DatastringsController < ApplicationController

  def new

  end

  def create
    @datastrings = Datastrings.new(datastrings_params) #ERROR returned on this line
    @datastrings.save
    redirect_to @datastrings
  end

  def show
    @datastrings = Datastrings.find(params[:id])
  end

  private

  def datastrings_params
    params.require(:datastrings).permit(:title, :text)
  end

end
我相信我的表格是正确的:

<%= form_for :datastrings, url: datastrings_path do |f| %>
  <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 %>

您遇到的主要问题如下:

<%= form_for :datastrings, url: datastrings_path do |f| %>
-

你还需要用单数来命名你的模型

现在来看,您的主要问题似乎是您将模型命名为复数形式

这样做不好的原因是,当您加载Rails时,它将加载所有模型,因此,允许您通过引用它们的类名来调用它们。如果一个模型是复数的,我认为它不会正确加载它,从而导致您突出显示的错误

如果您将模型命名为以下名称,则应该更好:

#app/models/datastring.rb
Class Datastring < ActiveRecord::Base
end

模型类名称应该是单数的。将Datastring更改为Datastring。同时也不要忘记更改模型文件名。建议您按照教程或其他方式操作。我经常听到的一个例子是。谢谢你的解释。这解决了我的问题,但据我所知,我可能错了,我还没有生成一个模型,只是一个控制器数据字符串,我正试图将表单数据存储在其中。
#app/models/datastring.rb
Class Datastring < ActiveRecord::Base
end