2015-06-09 48 views
0

下面是我的API模型:轨道4个嵌套属性有未经许可的参数错误

class Api < ActiveRecord::Base 
    validates_presence_of :name 
    belongs_to :service 
    has_many :statuses 
    accepts_nested_attributes_for :statuses, reject_if: proc { |attributes| attributes['name'].blank? } 
end 

下面是我的描述模型:

class Description < ActiveRecord::Base 
    validates_presence_of :value 
    belongs_to :status 
end 

下面是我的状态模型:

​​

下面是我新建的控制器动作:

def new 
    @api = Api.new 
    @status = @api.statuses.new 
    @status.descriptions.new 
    end 

    def create 
    @api = Api.new(api_params) 
    if @api.save 
    flash[:info] = request.original_url + ".do?apiname=" + "#{@api.name}" 
    redirect_to root_path 
    else 
    @api.statuses.new 
    render :new 
    end 


    private 

    def api_params 
    params.require(:api).permit(:name, statuses_attributes: [:name, descriptions_attributes:[:value]]) 
    end 

下面是我的新模板:

<div class="form-horizontal"> 
<%= form_for @api, :url => commons_path do |f| %> 
    <div class="form-group"> 
    <%= f.label :name, "API Name", class: "col-sm-2 control-label" %> 
    <div class="col-sm-8"> 
     <%= f.text_field :name, class: "form-control" %> 
    </div>  
    </div> 

    <%= f.fields_for :statuses do |status| %> 
    <div class="form-group"> 
     <%= status.label :name, "Status", class: "col-sm-2 control-label" %> 
     <div class="col-sm-8"> 
     <%= status.text_field :name, class: "form-control" %> 
     </div> 
    </div> 

    <%= f.fields_for :description do |description| %> 
     <div class="form-group"> 
     <%= description.label :value, "Body", class: "col-sm-2 control-label" %> 
     <div class="col-sm-8"> 
      <%= description.text_area :value, class: "form-control", rows: 12, cols: 65 %> 
     </div> 
     </div> 
    <% end %> 
    <% end %> 

    <%= f.submit("Create Data", class: 'btn btn-primary col-sm-offset-2') %> 
    <%= link_to "Cancel", root_path, class: "btn btn-danger" %> 
<% end %> 

后,我创造新的data.It好像只描述的值没有保存到我的数据库。并在我的控制台中发现“Unpermitted parameter:description”错误。

任何人都知道会发生什么?

+0

我将其更改为f.fields_for:说明,但也显示错误。 – Dreams

回答

1
<div class="form-horizontal"> 
<%= form_for @api, :url => commons_path do |f| %> 
    <div class="form-group"> 
    <%= f.label :name, "API Name", class: "col-sm-2 control-label" %> 
    <div class="col-sm-8"> 
     <%= f.text_field :name, class: "form-control" %> 
    </div>  
    </div> 

    <%= f.fields_for :statuses do |status| %> 
    <div class="form-group"> 
     <%= status.label :name, "Status", class: "col-sm-2 control-label" %> 
     <div class="col-sm-8"> 
     <%= status.text_field :name, class: "form-control" %> 
     </div> 
    </div> 

    <%= status.fields_for :descriptions do |description| %> 
     <div class="form-group"> 
     <%= description.label :value, "Body", class: "col-sm-2 control-label" %> 
     <div class="col-sm-8"> 
      <%= description.text_area :value, class: "form-control", rows: 12, cols: 65 %> 
     </div> 
     </div> 
    <% end %> 
    <% end %> 

    <%= f.submit("Create Data", class: 'btn btn-primary col-sm-offset-2') %> 
    <%= link_to "Cancel", root_path, class: "btn btn-danger" %> 
<% end %> 
+0

感谢您的帮助。 – Dreams