2013-01-02 8 views
2

내가있어 경로 :과 같이 당신에게 URL을 제공로드 중첩 된 자원 (레일)과 같이

resources :projects do 
    resources :tasks 
end 

: URL/프로젝트/14/작업/3

작업에 대한 링크를 사용자가 클릭, 나는 작업을로드있을 때

project has_many :tasks 
task belongs_to :project 

지금은, # 프로젝트의 쇼보기 내에서 원격 => 진정한 링크를 통해 사업부로 보여줍니다 모델 것을 정의한다. 이것은 잘 작동합니다.

#tasks/show.js.erb 

$('#task_content').html("<%= j render(partial: 'tasks/single', locals: { t: @task }) %>"); 

#tasks/_single.html.erb 

<%= t.content %> 

문제

내가 사용자가 자동으로 프로젝트보기에서 사업부로 작업 부하를 URL/프로젝트/14/작업/3를 방문하여 가질 수 있도록하려는 것입니다.

는 기본적으로, 나는 실제로 URL/projects/14 렌더링 URL/projects/14/tasks/3을 가질 수있는 방법을 찾아야하고, JQuery와 $('a#task_<%= task.id %>').click()

내가 행동의이 종류를 인식하도록보기를 받고 대해 이동하는 방법을 알아낼 수 없습니다에게 호출해야합니다. 아무도 올바른 방향으로 나를 가리킬 수 있습니까?

감사합니다 !!! task_ <%의 ID = task.id %>

  • DIV 작업에

    1. 링크 :

      편집

      #TasksController 
          def show 
          @task = Task.find(params[:id]) 
          respond_to do |format| 
           format.js 
          end 
          end 
      
      
      #ProjectsController 
          def show 
          @project = Project.find(params[:id]) 
          respond_to do |format| 
           format.html # show.html.erb 
          end 
          end 
      

      프로젝트 # 쇼는 두 가지 주요 요소가 있습니다 콘텐츠를로드해야합니다 (div # task_content)

  • 답변

    1

    는 기본적으로, 나는 JQuery와 $ ('A #의 task_ <% = task.id %를 3 실제로 URL/프로젝트/14 렌더링 URL/프로젝트/14/작업 /이 할 수있는 방법을 찾아 호출 할 필요가 > ').()을 클릭

    당신은 작업 표준 HTTP 호출 (비 AJAX)에 의해 도달 한 경우 테스트 및로드에 자동로드에 매개 변수에 작업을 전달하는 프로젝트의 URL로 리디렉션 할 수 있습니다. 기본 케이스는 js 형식을 사용하기 때문에, 심지어는 간단 - 당신은 단지 html 형식을 테스트 할 수 있습니다 :

    #TasksController 
    def show 
        @task = Task.find(params[:id]) 
        respond_to do |format| 
        format.html { redirect_to project_path(@task.project_id, :load_task_id => @task.id) } 
        format.js 
        end 
    end 
    
    # somewhere in /projects/show partial 
    <% if params[:load_task_id] %> 
        <script type="text/javascript"> 
        $(function(){ 
         $('a#task_<%= params[:load_task_id] %>').click() 
        }); 
        </script> 
    <% end %> 
    
    +0

    고마워요! 컨트롤러 (단순화)와 프로젝트 # 쇼보기가 생성하는 것에 대한 설명을 추가했습니다. @PinnyM – nathan

    +0

    @Nathan : 업데이트 – PinnyM

    +0

    매력처럼 작동합니다! 감사! – nathan

    1

    아마 프로젝트 컨트롤러에 HTTP 요청을 작업 컨트롤러에 XHR 요청을 지시하고 보낼 Rails Routing Constraints을 사용 태스크 ID를 매개 변수로 사용하여 뷰에서 변수를 사용할 수 있도록 만든 다음 뷰는 태스크 변수가 있는지 확인하고 div를로드합니까? 또는 JS를 사용하여 URL을 검사하십시오.

    match "/projects/:id/tasks/:tid", :to => "projects#show", :constraints => lambda { |request| !request.xhr? } 
    match "/projects/:id/tasks/:tid", :to => "tasks#show", :constraints => lambda { |request| request.xhr? } 
    

    안된하지만 WERK 수 있습니다의 라인을 따라

    뭔가?