2012-07-10 2 views
5

그래서 여러 메시지가있는 페이지가 있으며 각 메시지에는 해당 메시지의 RATING을 변경 (상세 검색)하는 링크가 있습니다. 사용자가이 링크를 클릭하면 해당 메시지에 대한 데이터베이스의 해당 열 값을 업데이트하는 AJAX 호출이 필요합니다. 이 링크를 클릭하면 아무 것도 보이지 않습니다. 페이지를 새로 고치거나 다시로드하지 않아야합니다.link_to remote : true를 사용하여 매개 변수를 레일에 전달합니다.

저는 link_to remote : true를 사용하여이 작업을 수행하려고 시도했지만 제대로 작동하지 않을 수 있습니다. 이 질문과 레일 2와 3 사이의 변경 사항에 대한 온라인 문서는 다음과 같이 상당히 명확하지 않습니다. with는 더 이상 지원되지 않습니다.

나는 지금까지 가지고있는 것을 복사했지만 해결책에 가까워지는 것을 멀리 알고 있습니다. 데이터베이스에 전달해야하는 매개 변수 측면에서 profile_id, message_id 및 new_rating이 필요합니다.

미리 감사드립니다.

show.html.haml

.status-bar 
    = link_to "", { action: :refine_result }, remote: true 

profile_controller.rb

... 

def refine_result 
    @refinement = ResultRefinement.new 
    @refinement.profile_id = params[:profile_id] 
    @refinement.message_id = params[:message_id] 

    @refinement.save 

    respond_to do |format| 
    format.html { render nothing: true } 
    format.js { render nothing: true } 
    end 
end 

result_refinement.rb 먼저 ProfileController#refine_result에 대한 경로를 설정해야

class ResultRefinement < ActiveRecord::Base 
    attr_accessible :profile_id, :message_id, :new_rating, :deleted 

    belongs_to :profile 
end 

답변

6

.

match '/profile/refine_results' => 'profile#refine_results', :as => 'refine_results' 

같은 뭔가 그럼 당신은

.status-bar 
    = link_to "", refine_results_url(profile_id: 1, message_id: 100, new_rating: "awful"), remote: true 
+0

굉장 사용할 수 있습니다. 매개 변수를 전달하여 데이터베이스에 저장하기 시작했습니다. 내가 여전히 가지고있는 유일한 문제는 리디렉션되거나 변경되는 페이지를 멈추는 것입니다. –

+0

다른 js 파일이 아약스를 덮어 쓰는 것 같습니다. 그래서 내가 아약스를 인수하는 대신 링크를 따라 갔다. –

관련 문제