2015-01-24 4 views
0

편집 양식을 작성하는 중입니다. 나는 양식을 완성하고 그것이해야하는 것처럼 표현한다. 양식에 대한 업데이트를 제출하면 아무런 경로 오류도 발생하지 않습니다. 내 편집 페이지의 경로는 예를 들어 '/ topics/1/bookmarks/1/edit'입니다. 이 페이지는 완벽하게 잘로드됩니다. 해당 페이지에는 레코드 편집에 사용되는 양식의 일부가 들어 있습니다. 나는 그러나 제출 버튼을 선택하면 그것으로 '/ 주제/1/북마크/1'- 경로를 다시 다음과 같은 내게 제공 : 아래 라우팅 오류 경로 일치 없음 (올바른 경로)

Routing Error 
No route matches [PATCH] "/topics/1/bookmarks/1" 

가 중요해야 파일을 거기 있으면 알려주세요 내가 공유하지 않은 것. 그것을 보는 것이 중요합니다.

bookmarks_controller.rb

def edit 
    @topic = Topic.find(params[:topic_id]) 
    @bookmark = Bookmark.find(params[:id]) 
end 

def update 
    @topic = Topic.find(params[:topic_id]) 
    @bookmark = Bookmark.find(params[:id]) 

    if @bookmark.update_attributes(params.require(:bookmark).permit(:url, :topic_id, :description)) 
    flash[:notice] = "Bookmark was updated" 
    redirect_to [@topic, @bookmark] 
    else 
    flash[:error] = "There was an error saving the Bookmark. Please try again." 
    render :edit 
    end 
end 

설정/routes.rb

resources :topics do 
    resources :bookmarks, only: [:show, :new, :edit] 
end 

북마크/_form.html.erb

<%= form_for [topic, bookmark] do |f| %> 
    <%= f.label :description %> 
    <%= f.text_field :description %> 
    <%= f.label :url %> 
    <%= f.text_field :url %> 
    <%= f.submit %> 
<% end %> 

북마크/edit.html.erb

<%= render partial: 'form', locals: {topic: @topic, bookmark: @bookmark} %> 

답변

1

업데이트 경로가 없으므로 실제로 데이터베이스를 업데이트합니다. 당신이 새로운 액션이있는 경우 그냥,

resources :bookmarks, only: [:show, :new, :edit, :update] 

또는 더 나은 아직에

resources :bookmarks, except: [:index, :create, :destroy] 

resources :bookmarks, only: [:show, :new, :edit] 

을 변경 당신은 너무 만드는 작업을 할 것이다. 그래서, 마침내 :

+0

나는 그것이 그 것인지 궁금하게 생각하고 있었다. 다른 모든 것들이 옳은 것처럼 보였습니다. 도움을 주셔서 감사합니다 Ryan – Brandon

+0

문제 없습니다. 해피 코딩! –

관련 문제