我有两个create方法(可能可以构造得更好,但对inherited_resources来说是新的)
基本上,我想在创建后重定向到不同的页面,我使用一种方法得到一个ForbiddenAttributes错误,但不是原来的创建操作,我猜有一些特殊的方法来使用IH,但我被这个难住了。
在我的第二个动作中,我需要手动分配参数-我猜我需要用IH的方式来做这件事,那一行是它爆炸的地方,所以问题是IH如何实现这一点而没有错误?
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
路由定义为
match 'manage_create', to: 'leave_requests#manage_create', as: :manage_create_leave_request, via: [:post]
我使用IH 1.4.1
我需要添加完整的参数列表到我的manage_create函数-我完全不知道为什么它不使用现有的permitted_params方法。
@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]))