die Schienen Mit Guss http://railscasts.com/episodes/324-passing-data-to-javascript?autoplay=truePass Variablen in JavaScript Schienen
eine Variable aus meinem Controller Javascript passieren.
Ich habe eine Schaltfläche, wenn ich darauf klicke, möchte ich die Anzahl der Upvotes anzeigen.
Im mit Gon.
Wenn ich versuche, es jedoch zu laufen, sagt mein Alarm die Variable nicht einmal definiert ist, obwohl ich es in der Steuerung
_source.html.erb
<div class="panel-body">
<%= include_gon(:init => true) %>
<%=source.source %>
<% @count = pluralize(source.upvotes.count,"upvote") %>
<div id="count"><%= @count %></div>
<%= button_to '+1', upvote_source_path(source), method: :post,remote: true %>
<p><%= link_to "delete", [source.fact, source], method: :delete, data:{confirm: "are you sure?"} %></p>
</div>
application.html.erb
gesetzt<!DOCTYPE html>
<html>
<head>
<title>Sourcemonkey</title>
<%= include_gon(:init => true) %>
<%= csrf_meta_tags %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<%= yield %>
</body>
</html>
sources_controller.rb -> upvotes Aktion
def upvote
@source = Source.find(params[:id])
@source.upvotes.create
gon.count = @source.upvotes.count
respond_to do |format|
format.js {render :js =>"upDateCount()"}
format.html { redirect_to :none}
end
end
upvote.js.erb
function upDateCount(){
alert(gon.count)
}
routes.rb
Rails.application.routes.draw do
# mount Ckeditor::Engine => '/ckeditor'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root to: "facts#index"
resources :facts do
resources :sources
end
resources :sources do
member do
post 'upvote'
end
end
resources :upvote
end
Ideen schätzen, dank
Das funktioniert, danke !!!! Ich bin neugierig zu wissen, warum dieser Fall speziell ist und Gon wird nicht empfohlen, wenn Sie wissen? – mogoli
Ich benutze 'format.js' nicht, ich neige dazu, mit Daten zu antworten, nicht mit Skripten, weshalb ich das nicht genau weiß. Ich nehme an, dass von Controllern gerenderte Skripte in einem anderen Kontext ausgewertet werden als statische Skripte. – mrzasa
Vielen Dank für die Erklärung, ich bin mit Schienen beginnen, so schätzen die Einsicht – mogoli