1

我想通过这个表单创建一个新任务。但它说

无效的单表继承类型:hot不是Task的子类

这是我的代码。该问题必须与 new.html.erb 中的“f.select”有关

 def new 
   @task = Task.new
 end

 def create
       @task = Task.new(task_params)
       if @task.save
       # Handle a successful save.
       flash[:success] = "Task accepted!"
       redirect_to @task
       else
       render 'new'
       end
 end

private
      def task_params
      params.require(:task).permit(:type, :title, :details,:url)
end

还有 new.html.erb

<div class="row">
  <div class="span6 offset3">
    <%= form_for(@task) do |f| %>


      <%= f.label :Select_Type %>
      <%= f.select :type, [['Hot','hot'],['Medium','medium'],['Cold','cold']] %>


      <%= f.label :Title %>
      <%= f.text_field :title %>

      <%= f.label :Details %>
      <%= f.text_field :details %>

      <%= f.label :Your_file_location %>
      <%= f.text_field :url %>

      <%= f.submit "Create a New Task", class: "btn, btn-large btn-primary" %>
    <% end %>
  </div>
</div>

我认为问题是“类型”。我不知道要解决这个问题。我尝试了在 Stackoverflow 中可以找到的所有内容,但我遇到了同样的错误。请帮我。提前致谢。

4

1 回答 1

0

如果您查看 rails guide Schema Convensions,您可以看到这type是 STI(单表继承)的保留列。您需要重命名列或告诉 rails 模型为 STI 使用不同的列。您可以在官方文档中找到有关 STI 的更多信息

于 2013-10-15T16:53:25.367 回答