Rails4下拉框

时间:2013-10-15 16:39:30

标签: ruby-on-rails

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

  

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

这是我的代码。这个问题必须与" f.select"在new.html.erb

 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>

我认为问题是&#34;键入&#34;。我不知道解决这个问题。我尝试了Stackoverflow中可以找到的所有内容,但是我得到了同样的错误。请帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果查看rails guide Schema Convensions,可以看到type是STI的保留列(单表继承)。您需要重命名列或告诉rails模型为STI使用不同的列。您可以在official docs

中找到有关STI的更多信息