2012-07-10 17 views
5

Mam więc stronę z kilkoma komunikatami, każdy z linkiem, który zmienia (poprawia) RATING tej wiadomości. Kiedy użytkownik kliknie na ten link, chcę wywołać AJAX, które aktualizuje odpowiednią wartość kolumny w bazie danych dla tej wiadomości. Kiedy klikniesz ten link, nic nie powinno się wydarzyć w widoczny sposób. Nie powinno być odświeżania strony ani ponownego ładowania.Korzystanie z opcji link_to remote: true do przekazywania parametrów do szyn

Próbowałem zrobić to za pomocą linku link_to remote: true, ale nie mogę go uruchomić. Dokumentacja online jest dość niejasna w tej kwestii, a wraz ze zmianami między Railsami 2 i 3, niektóre rzeczy takie jak: with nie są już obsługiwane.

Skopiowałem to, co mam do tej pory, ale wiem, że daleko mu do zbliżenia się do rozwiązania. Pod względem parametrów, które muszę przekazać do bazy danych, potrzebuję profile_id, message_id i new_rating.

Z góry dziękuję!

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

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

    belongs_to :profile 
end 

Odpowiedz

6

Musisz skonfigurować trasy dla ProfileController#refine_result pierwszy. Coś jak

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

Następnie można użyć

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

niesamowite. Mam go, aby rozpocząć przekazywanie parametrów i zapisywanie ich w bazie danych. Jedyny problem, który wciąż mam, to powstrzymanie strony przed przekierowaniem lub zmianą. –

+0

Wygląda na to, że kolejny plik js nadpisał ajax. Dlatego nadal śledziłem link, zamiast przejąć ajax. –

Powiązane problemy