Tôi làm điều gì đó tương tự, nhưng đơn giản hơn gon. Tôi có những điều sau đây trong số ApplicationController
của tôi.
def javascript_variables(variables)
@javascript_variables ||= {}
@javascript_variables.merge!(variables)
end
Trong một hành động điều khiển sau đó tôi có thể làm một cái gì đó giống như
def some_action
javascript_variables(user: current_user)
end
Trong ApplicationHelper
của tôi, tôi có một cái gì đó như thế này
def javascript_variables(variables = nil)
@javascript_variables ||= {}
@javascript_variables.merge!(variables) and return if !variables.nil?
output = ''
padding = @javascript_variables.keys.group_by(&:size).max.first
@javascript_variables.each do |variable, value|
output << "#{variable.to_s.ljust(padding)} = #{value.to_json},\n "
end
raw "var " + output.strip.html_safe.gsub(/\,\Z/m, ';')
end
và cuối cùng trong của <head>
Tôi có
bố trí của tôi
<script>
<%= javascript_variables %>
</script>
.210
này mang lại cho tôi một cái gì đó giống như này (từ một ví dụ thực tế trong ứng dụng của tôi)
<script>
var pageModule = "site/index",
isCustomer = false,
utype = "normal",
isAnonymous = true,
keyboardShortcuts = false,
pubnub = null,
requestToken = "3zj974w074ftria3j";
</script>
Did một trong những giải pháp làm việc? – Powers
bản sao có thể có của [Ruby on Rails - Gửi biến JavaScript từ bộ điều khiển sang tệp nội dung Javascript bên ngoài] (http://stackoverflow.com/questions/2721880/ruby-on-rails-send-javascript-variable-from-controller-to -external-javascript) hoặc http://stackoverflow.com/questions/2464966/passing-ruby-variables-to-javascript-function-in-rails-view nếu bạn không yêu cầu tệp Js bên ngoài. –