2012-07-10 6 views
5

So habe ich eine Seite mit mehreren Nachrichten, jede mit einem Link, der die RATING dieser Nachricht ändert (verfeinert). Wenn ein Benutzer auf diesen Link klickt, möchte ich einen AJAX-Aufruf, der den entsprechenden Spaltenwert in der Datenbank für diese Nachricht aktualisiert. Wenn dieser Link angeklickt wird, sollte nichts sichtbar passieren. Es sollte keine Seite aktualisieren oder neu laden.Verwenden von link_to remote: true, um Parameter an Schienen zu übergeben

Ich habe versucht, dies zu tun mit link_to remote: true, aber ich kann nicht scheinen es zu arbeiten. Online-Dokumentation ist in dieser Frage ziemlich unklar und mit den Änderungen zwischen Rails 2 und 3 werden einige Dinge wie: mit werden nicht mehr unterstützt.

Ich habe kopiert, was ich bisher habe, aber ich weiß es weit davon entfernt, sogar in der Nähe einer Lösung zu kommen. In Bezug auf Parameter, die ich in die Datenbank übergeben muss, brauche ich die profile_id, die message_id und die new_rating.

Vielen Dank im Voraus!

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 

Antwort

6

Sie benötigen eine Route für ProfileController#refine_result erste einzurichten. So etwas wie

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

Dann können Sie

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

Ehrfürchtig verwenden. Ich habe es begonnen, die Parameter zu übergeben und sie in der Datenbank zu speichern. Das einzige Problem, das ich immer noch habe, ist das Stoppen der Umleitung oder Änderung der Seite. –

+0

Es scheint, dass eine andere js-Datei den Ajax überschrieben hat. Deshalb habe ich den Link weiter verfolgt, anstatt Ajax übernehmen zu müssen. –

Verwandte Themen