2017-10-25 5 views
0

WordPress 기능을 복제하고 싶습니다.Ruby on Rails 두 가지 방법으로 데이터를 모델에 저장하십시오.

예를 들어, 당신은 새 게시물을 만들 수 있으며, 두 가지 방법으로 저장 - 나는 create 방법 new 방법을 만들어 레일 자원 경로를 사용

을 "초안을 만들기" "게시물 게시"합니다.

또한 게시 모드와 임시 모드로 저장하는 사용자 지정 방법을 만들었습니다.

class GroupEventsController < ApplicationController 
def new 
    @ge = GroupEvent.new 
end 

def publishnew 
    @ge = GroupEvent.new(groupevent_params) 
    @ge.save 
    redirect_to @ge 
end 
def create 
    @ge = GroupEvent.new(groupevent_params) 
    @ge.save 
    redirect_to @ge 
end 

private 
def groupevent_params 
    abort params.inspect   
    params.require(:group_event).permit(:name, :description, :startdate, :duration, :status) 
end 

양식을 제출할 때 완벽하게 작동하지만 publishnew 메소드로 이동하면 작동하지 않습니다. 그런 오류를 보여줍니다. param이 누락되었거나 값이 비어 있습니다. group_event

어떻게 해결할 수 있습니까?

+1

콘솔에 출력물을 추가해야합니다 (질문을 편집하여 의견을 게시하는 것이 아니라). 나는 당신이 당신의 매개 변수에'group_event'을 가지고 있지 않다는 것을 알게 될 것이라고 믿는다. 또한 Rails를 잠시 동안 사용하려고한다면 명명 규칙을 따르는 것이 좋을 것입니다 (특히 마지막 질문에 대한 도전 이었기 때문에). – jvillian

+0

'publishnew' 액션에 어떻게 게시 하시겠습니까? JS? –

답변

1

동일한 접근법을 얻으려면 다른 접근 방식을 제안합니다.

정확하게 이해하면 양식 제출이 다르게 동작합니다. 이것은 당신이 좋아하는 어떤 일을 할 수있는 컨트롤러 액션에 다음

<input type="submit" value="publish" id=".." name="commit" /> 
<input type="submit" value="draft" id=".." name="commit" /> 

같은 몇 가지 일을해야합니다

f.submit :publish 
f.submit :draft 

에 대한 두 개의 버튼을 추가하는 방법

...

class GroupsEventsController < ApplicationController 
    def create 
    if params[:commit] == 'publish' 
     publish_event 
    else 
     draft_event 
    end 
    end 

    private 

    def publish_event 
    // Appropriate code here 
    end 

    def draft_event 
    // Appropriate code here 
    end 
end 

그렇게하면 클라이언트 측에서 JS foo doo를 수행하여 다른 경로에 게시 할 필요가 없습니다.