2012-06-15 5 views
0

템플릿이 "groups/show.html.erb"입니다. 매개 변수를 컨트롤러에 전달하여 링크를 부분적으로 렌더링합니다. 그런 다음 컨트롤러는 매개 변수를 사용하여 JS 호출을 식별합니다.추가 매개 변수가있는 'show'템플릿을 렌더링하면 라우팅 오류가 발생합니다.

<%= link_to 'Add a Video', group_path(create_video: true), remote: true %> 

는 제어기

elsif params[:create_video] 
    @video = Group.find(params[:id]).videos.build 
    respond_to do |format| 
    format.js {render action: 'create_video'} 
    end 

에서 이것은 videos_controller의 작성 방법을 이용하여 동영상을 생성하는 형태로 부분적으로 가져온다. 폼의 유효성 검사가 실패하고 난 "그룹/쇼는"나는 라우팅 오류 얻을 렌더링하려고하면 :

_create_video.html.erb

<%= form_for @video, :url => group_videos_path(@group) do |f| %> 
    <%= f.text_field :name %> 
    <%= f.submit %> 
<% end %> 

없음 경로 일치에게 {: 행동 => "쇼" , : controller => "groups", : create_video => true}

이 작업을하려면 routes.rb에서 명시 적으로 일치시킬 수 있다고 생각하지만 더 좋은 방법은 없을까요? 덕분에 당신은 어떤 그룹을주고 잊어 무리

답변

1

, 당신은 보통이 도움이

group_path(@group, create_video: true) 

희망 같은 것을해야한다.

+0

고맙습니다. 페이지가 원래로드 될 때 어떤 그룹을 지정할 필요는 없지만 렌더링 후에 수행하는 것은 이상한 일입니다. 왜 이런 경우입니까? – Steve

+0

확실하지 않지만, 나는 또한 그것을 보았습니다. 필자는 레일스가 매개 변수가 주어지지 않으면'@group' 인스턴스 변수를 찾을 것이라고 생각합니다. 매개 변수를 제공하면 대신 매개 변수가 사용됩니다. 난 항상 명시 적으로 노력하고 경로를 보여주고 자하는 객체를 지정한다. – nathanvda

+0

@group을 지정하지 않았지만 여전히 매개 변수가 있었고 모델 유효성 검사 전에 제대로 작동했기 때문에 그럴 것이라고 생각하지 않습니다. 나는 다른 컨트롤러에서 "show"를 랜더링하기 때문에 URL과 관련하여 혼란스럽고 이름이 붙은 id를 자동으로 추가하지 않기 때문에 뭔가 관련이 있다고 생각합니다. 내가 렌더링에서 보여주기 위해 돌아갈 때 URL은/groups/: id/videos가됩니다. 왜 그렇게하는지 모르겠습니다. – Steve

관련 문제