导轨强参数无法正常工作

问题描述:

我有一个导轨应用程序。我在保存表格中有奇怪的问题导轨强参数无法正常工作

这是我的机票模型。

class Ticket < ApplicationRecord 
    belongs_to :user 
    has_many :ticketissues , inverse_of: :ticket 

    accepts_nested_attributes_for :ticketissues, :reject_if => lambda { |a| a[:body].blank? } 

end 

这是ticketisue模型

class Ticketissue < ApplicationRecord 

     belongs_to :user 
     belongs_to :ticket 

    validates :body, presence: true 
    end 

this is ticket controller 

class TicketsController < ApplicationController 
    before_action :set_ticket, only: [:show, :edit, :update, :destroy] 

    # GET /tickets 
    # GET /tickets.json 
    def index 
    @tickets = Ticket.all 
    end 

    # GET /tickets/1 
    # GET /tickets/1.json 
    def show 
    end 

    # GET /tickets/new 
    def new 
    @ticket = Ticket.new 
    end 

    # GET /tickets/1/edit 
    def edit 
    end 

    # POST /tickets 
    # POST /tickets.json 
    def create 
    @ticket = Ticket.new(ticket_params) 
    @ticket.user_id = current_user.id 
    @ticket.ticketissues.build 

    respond_to do |format| 
     if @ticket.save 
     format.html { redirect_to @ticket, notice: 'Ticket was successfully created.' } 
     format.json { render :show, status: :created, location: @ticket } 
     else 
     format.html { render :new } 
     format.json { render json: @ticket.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # PATCH/PUT /tickets/1 
    # PATCH/PUT /tickets/1.json 
    def update 
    respond_to do |format| 
     if @ticket.update(ticket_params) 
     format.html { redirect_to @ticket, notice: 'Ticket was successfully updated.' } 
     format.json { render :show, status: :ok, location: @ticket } 
     else 
     format.html { render :edit } 
     format.json { render json: @ticket.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /tickets/1 
    # DELETE /tickets/1.json 
    def destroy 
    @ticket.destroy 
    respond_to do |format| 
     format.html { redirect_to tickets_url, notice: 'Ticket was successfully destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_ticket 
     @ticket = Ticket.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def ticket_params 
     params.require(:ticket).permit(:subject, :subsubject, :user_id, ticketissues_attributes: [ 
     :body, :id, :_destroy]) 
     #params.require(:ticket).permit! 
    end 
end 

,我的看法是这样的

<%= f.input :subject , collection: [ "تغییر اطلاعات کسب و کار", 
            "تغییر اطلاعات یک کوپن", 
            "سایر موارد"] %> 

    <%= f.input :subsubject %> 
    <!-- <%= f.association :user %> --> 
    </div> 

     <%= f.simple_fields_for :ticketissue do |p| %> 
     <%= p.input :body %> 
     <% end %> 

    <div class="form-actions"> 
    <%= f.button :submit %> 
    </div> 
<% end %> 

,但是当我要创建票证,形式不会保存到数据库 我得到这个错误:

开始POST“/票”为127.0.0.1,在2017年4月11日23点52分33秒0430

Processing by TicketsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"fsl6nTe0PjmBKpeuh16BRFlYOw0MB93LEYDVEAl6TtT/uu/LwGTA0P2q0bRxIxBUqHqZINXHntrZLt7MuCG84Q==", "ticket"=>{"subject"=>"تغییر اطلاعات کسب و کار", "subsubject"=>"lk", "ticketissue"=>{"body"=>"lkjkjkjkjkkjkj"}}, "commit"=>"Create Ticket"} 
Unpermitted parameter: ticketissue 

但是当我使用控制台和命令:

Ticket.create(subject: 'test' , subsubject: 'ticket test' , ticketissues_attributes: [{body: "[some thing" }]) 

每件事情都是罚款和所有数据保存。

坦克的阅读和帮助。

+0

从ticketissues_attributes更改强PARAM:到ticket_issue: – bkunzi01

必须使用这里的复数

= f.simple_fields_for :ticketissues do |p| 
+0

我以前做到了,但我不知道为什么,当我使用:ticketissues 全身面积(提交)消失。 并只用主题和子主题(没有主体文本区域)进行表单提醒。 – Armanlearn

+0

这可能是因为'@ ticket.ticketissues'是'nil',因此不会显示任何问题。你是用'new'还是'edit'? – Iceman