2013-09-04 2 views
0

내 응용 프로그램은 inherited_resources과 함께 Rails 4를 사용하고 있습니다. 매우 이상하게도 update 작업이 작동하지 않는 것 같습니다. 형태 (6 개) 필드가 있습니다Inherited Resources Rails 4 업데이트 동작

ArgumentError in Admin::FaqsController#update 
wrong number of arguments (6 for 1) 

다음 edit 페이지의 양식을 제출하려고 할 때,이 오류가 발생합니다. 내 컨트롤러는 다음과 같습니다.

class Admin::FaqsController < Admin::AdminController 
    inherit_resources 
    respond_to :html 
    actions :index, :new, :create, :edit, :update, :destroy 

    private 

    def resource_params 
    params.require(:faq).permit(:title, :slug, :body, :publish_immediately, :published_at, :status) 
    end 
end 

왜 이런 일이 발생합니까? Rails 4와는 호환되지 않으므로 update 작업을 직접 수행해야합니까?

+1

Faq 양식의 형식이 올바른지 확인하십시오. 'params.require (: faq) .permit '으로'params.require (: faq) .permit (: title, : slug, : body, : publish_immediately, : published_at, : status)를 대체하면 어떻게됩니까? – Raindal

+0

같은 것. 요청 데이터도 다시 확인했고 올바른 필드가 있습니다. 그 오류는 분명히 보석의 어딘가에서 오는 것입니다, 불행히도 그것은 전체 스택 추적을 제공하지 않습니다. 그럴 경우 문제가 무엇인지 파악할 수 있습니다. 전체 스택 트랙을 표시하는 방법이 있습니까? – Jonah

답변

2

나는 그것을 알아 냈다. 나는 문서를 거쳐 갔고 params permit을 잘못 사용하고있는 것을 보았습니다. 나는 그것이 require 호출 resource_params라고 생각했다, 그러나 그것은 다음과 같다 :

class Admin::FaqsController < Admin::AdminController 
    inherit_resources 
    respond_to :html 
    actions :index, :new, :create, :edit, :update, :destroy 

    private 

    def permitted_params 
    params.permit(faq: [:title, :slug, :body, :publish_immediately, :published_at, :status]) 
    end 
end 

의 차이는 허용 이내에 방법 permitted_params를 호출하고, 특정 필드에 전체 PARAMS 배열을 반환에 대신에만 경우 리소스의 필드.