2013-01-16 1 views
0

내 응용 프로그램에 List 개체와 Problem 개체가 있고 목록이 문제로 구성되어 있으며 많은 목록에 문제가있을 수 있습니다. 모든 문제의 목록을 표시하고는 "LINK_TO"를 제공하기 위해, 내 목록의 쇼보기에서 내가 의도link_to를 사용하여 HABTM 관계 테이블에 개체 추가

class AddTableListsProblems < ActiveRecord::Migration 
    def up 
    create_table :lists_problems, :id => false do |t| 
    t.references :list 
    t.references :problem 
    t.timestamps 
end 
    end 

    def down 
    drop_table :lists_problems 
    end 
end 

지금 : 나는 두 클래스에 HABTM를 사용하고 난과 같이 테이블을 조인 자신의 만든 표시되는 현재 목록에이 문제를 추가하는 방법을 알 수는 없습니다. 나는 RoR에 익숙하지 않기 때문에 해결책은 아마 간단하다.

이것은 현재 가지고있는 코드입니다.

미리 도움을 주셔서 감사합니다.

답변

1

ListController이 있다고 가정 해 봅시다. 액션에 add_problem 액션을 추가합니다.

def add_problem 
    list = List.find(params[:id]) 
    problem = Problem.find(params[:problem_id]) 

    list.problems << problem # This appends and saves the problem you selected 

    redirect_to some_route # change this to whatever route you like 
end 

그리고 새 경로를 만들어야합니다. 가정 당신은 당신이 당신의 link_to

<% @problems.each do |problem| %> 
    <%= render problem %> 
     | <%= link_to "Add to current list", add_problem_list_path(list: @list, problem_id: problem.id), method: :put %> 
<% end %> 

을 변경할 수 있습니다 다음과 같은 경로를보기에

add_problem_list PUT /list/:id/add-problem/:problem_id(.:format) list#add_problem 

를 생성하면

resources :list do 
    member do 
    put "add-problem/:problem_id", action: :add_problem, as: :add_problem 
    end 
end 

이 같은있을 수 있습니다 수완 경로를 사용하고

참고 이것은 단지 예입니다. add_problem 메서드에서 권한 부여/유효성 검사/등을하고 싶습니다.

+0

이것은 많은 속임수를 썼습니다. – nanomachine

0

an example in the rails source 보면, 당신이 바로 List를 업데이트/새로운 Problem를 작성하고 List.problems 배열에 그 추가 한 후 저장해야 할 것으로 생각된다.