2015-06-09 83 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