通过form_for保存空记录 - 错误的参数数量

时间:2014-05-05 00:26:22

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

更新:Zishe想出来了。正确的params.require代码应该是:

def adventure_params
  params.require(:adventure).permit(:story, :choice, :parent_id, :user_id)
end
当然,

用括号代替括号。

原始问题:

我正在制作一个form_for,它应该向Adventure模型提交4个属性。冒险模型有祖先。基于我的params.require方法,我一直得到错误的参数数量(4个为1)。当我将需求更改为1时,我发现数据库中的所有属性都是空白的。我知道他们在参数中,但由于某种原因他们没有得救。这是我的代码:

表格

<div class="form">
  <%= form_for @adventure do |f| %>
    <%= f.label :choice %>
    <%= f.text_area :choice %>

    <%= f.label :story %>
    <%= f.text_area :story %>

    <%= f.label :parent_id %>
    <%= f.text_field :parent_id %>

    <%= f.submit "Post"%>
  <% end %>
</div>

控制器

class AdventuresController < ApplicationController
  before_filter :authenticate_user!

  def home
  end

  def index
  end

  def new
    @parent_id = params[:parent_id]
    @adventure = Adventure.new
  end

  def show
    @adventure = Adventure.find(params[:id])
  end

  def create
    @user = current_user
    @adventure = current_user.adventures.build(adventure_params)
    if @adventure.save
      flash[:success] = "Adventure created!"
      redirect_to @adventure
    else
      flash[:error] = "There was an error"
      redirect_to adventures_path
    end
  end

  private

    def adventure_params
      params.require(:adventure).permit[:story, :choice, :parent_id, :user_id]
    end
end

模型

class Adventure < ActiveRecord::Base
  has_ancestry
  belongs_to :user
  validates :user_id, presence: true
  validates :parent_id, presence: true
end

我不知道为什么我的参数数量错误,因为属性显示在参数中。

1 个答案:

答案 0 :(得分:0)

permit[...]更改为:

.permit(:story, :choice, :parent_id, :user_id)