【问题标题】:Object not saving to database对象未保存到数据库
【发布时间】:2016-06-27 01:47:15
【问题描述】:

我正在尝试使用 form_for 在 Rails 中创建一个新对象。由于某种原因,我无法将对象保存到数据库中。见下文

型号:

class Property < ActiveRecord::Base
  has_many :units
end

视图: new.html.erb

<form>
  <div class="form-group">
    <div class = "row">
      <div class="col-md-8">

        <%= form_for (@property) do |f| %>

          <%= f.label :property_name %>
          <%= f.text_field :property_name, class: 'form-control', placeholder:"Please enter property name here" %><br/>

          <%= f.label :property_address %>
          <%= f.text_field :property_address, class: 'form-control' %><br/>
      </div> 
    </div>    
  </div> 
  <%= f.submit "Add Building"%> 
  <% end %>
</form>

控制器:

  def new
    @property = Property.new
  end

  def create
    @property = Property.new(property_params)
    if @property.save
      flash[:success] = "Property created"
      redirect_to root_path
    else
      flash[:error] = "Property was not created"
      render new_property_path
    end
  end
private
    def property_params
      params.require(:property).permit(:property_name, :property_address)
    end

这是它产生的参数

Parameters: {"utf8"=>"✓", "authenticity_token"=>"VNad0+BD6TAavWiSCSX12Ob6ilU+DrzDv0O/d++af1+s6BtQkC2hKUUINaPXhk1hWA5Qfa6JV0RwkpAlx8IwKg==", "property"=>{"property_name"=>"test 934", "property_address"=>""}, "commit"=>"Add Building"}

【问题讨论】:

  • 您遇到的错误是什么?

标签: ruby-on-rails forms form-for


【解决方案1】:

您的视图中似乎有一个额外的 FORM 标记。表单不能嵌套在 HTML 中。在您的视图中,您应该删除此表单

<form>
  <div class="form-group">
..
..
</form>

这个块将生成带有动作和方法集的表单。因此,如果您从中删除此额外内容,它应该可以工作。

<%= form_for (@property) do |f| %> 

将生成表单method='post'action='/properties'

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2020-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多