inherited_resources alternate create method forbiddenattributes

116 Views Asked by At

I have two create methods (maybe could be structured better, but new to inherited_resources)

Basically, I want to redirect to a different page after create, I am getting a ForbiddenAttributes error using one method, but not the original Create action, I'm guessing there is some special way to use IH, but I am stumped on this one.

In my second action, I need to manually assign the params - I'm guessing I need to do this the IH way, that line is where it blows up so the question is how is IH achieving this without an error?

def create
  if can? :create, LeaveRequest
    create! { leave_requests_url }
  end  
end

def manage_create
  @leave_request = LeaveRequest.new(params[:leave_request])
  if can? :create, LeaveRequest
    create! { manage_leave_requests_url }
  end  
end

def permitted_params
  {:leave_request => params.fetch(:leave_request, {}).permit(:user_id, :controller, :manager_id, :part_day, :comment, :selected_dates, :status, :leave_type_id, leave_dates_attributes: 
      [:id, :leave_request_id, :hours, :date_requested, :_destroy])}
end

Route is defined as

match 'manage_create', to: 'leave_requests#manage_create', as: :manage_create_leave_request, via: [:post]

I'm using IH 1.4.1

1

There are 1 best solutions below

0
On

I needed to add the full list of parameters to my manage_create function - I have absolutely no idea why it doesn't use the existing permitted_params method.

  @leave_request = LeaveRequest.new(params[:leave_request].permit(:user_id, :controller, :manager_id, :part_day, :comment, :selected_dates, :status, :leave_type_id, leave_dates_attributes: 
      [:id, :leave_request_id, :hours, :date_requested, :_destroy]))