【问题标题】:Rails form input fields not saving to DB (but created_at timestamp is)Rails 表单输入字段不保存到数据库(但 created_at 时间戳是)
【发布时间】:2013-12-25 05:57:11
【问题描述】:

我是 Rails 新手,我想了解为什么我的表单没有保存到数据库中。这可能是我没有完全掌握 Rails 的 MVC 框架的结果,所以希望一旦我弄清楚这一点,它将提供清晰。

更新时间节省,但剩余记录显示为空。在我的提交按钮(触发更新和创建时间戳)之外,数据库和我的表单之间似乎没有交互。

这是我的控制器:

  def create
  @recommendation=Recommendation.new
  end

这是我的表格:

<%= form_for @recommendation, url: {action: "create"} do |f| %>
    <% if @recommendation.errors.any? %>
    <div id="error_explanation">
    <h2><%= pluralize(@recommendation.errors.count, "error") %> prohibited this recommendation from being saved:</h2>
    <% end %> 

  <div><%= f.label "recommendation category"%><br />
  <%= f.text_field :rec_type %></div>

  <div><%= f.label "Description" %><br />
  <%= f.text_field :rec_description %></div>

  <div><%= f.label "Link" %><br />
  <%= f.text_field :link %></div>

  <div> <%= f.submit "Submit Recommendation" %></div>
<% end %>

这是我提交后的日志:

Started POST "/recommendations/create" for 127.0.0.1 at 2013-12-25 00:42:39 -0500

Processing by RecommendationsController#create as HTML

  Parameters: {"utf8"=>"✓", "authenticity_token"=>"U2+h08nRXgkkNp0u74a5Gmh0eSWU4gP67A2CWGaJ/fE=", "recommendation"=>{"rec_type"=>"asdf", "rec_description"=>"efads", "link"=>"wfea"}, "commit"=>"Submit Recommendation"}

   (0.1ms)  begin transaction

  SQL (617.6ms)  INSERT INTO "recommendations" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", Wed, 25 Dec 2013 05:42:39 UTC +00:00], ["updated_at", Wed, 25 Dec 2013 05:42:39 UTC +00:00]]

   (1.6ms)  commit transaction

【问题讨论】:

    标签: ruby-on-rails forms ruby-on-rails-4


    【解决方案1】:

    Model.new 只是创建关联类的实例。它不会将其保存到数据库中。通过新操作呈现您的表单。您也不必在表单 url 中创建操作。根据 Rails 约定,模型新实例总是转到它的创建方法。它应该是

    def new
     @recommendation=Recommendation.new
    end
    
    def create
     @recommendation=Recommendation.new(allowed_params)
     @recommendation.save
    end
    
    private
    def allowed_params
      params.require(:recommendation).permit(:rec_type, :rec_description, :link)
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-20
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多