erb не будет отображаться в файле coffeescript - PullRequest
1 голос
/ 31 октября 2011

Мне трудно понять, почему наш код ruby ​​не отображается в coffeescript. В конечном итоге мы работаем над созданием ряда маркеров, хранящихся в модели Rails, в представлении Google Maps. Поскольку у нас были проблемы с циклом, мы попытались получить тестовую переменную для отображения в предупреждении; это не работает. Появляется предупреждение, но оно говорит только Привет , а не Привет 5 (или Привет "5" ?)

Это наш файл coffeescript (location.coffee.erb)

* * 1010

@ test определен в #map, внизу location_controller.rb:

class LocationsController < ApplicationController

    def show
        @traveling_party = TravelingParty.find_by_id(session[:party])
        @location = Location.where("position >= #{@traveling_party.position}").order("position ASC").first
    end

    def move
        f = params[:traveling_party]

        @traveling_party = TravelingParty.find(f["id"])
        @traveling_party.speed = f["speed"].to_i
        @traveling_party.ration = f["ration"].to_i

        @location = Location.where("position > #{@traveling_party.position}").order("position ASC").first

        @traveling_party.position += @traveling_party.speed
        if @traveling_party.position > @location.position 
            @traveling_party.position = @location.position
        end

        food_eaten = @traveling_party.ration * @traveling_party.people
        Item.where({:trader_id => @traveling_party.id, :type => "Food"}).limit(food_eaten).destroy_all()

        if @traveling_party.save()
            flash[:notice] = "Successfully updated traveling party."
            redirect_to '/play/'
        else
            flash[:error] = "Transaction could not be completed."
            redirect_to '/play/'
        end
    end

    def map
        @traveling_party = TravelingParty.find_by_id(session[:party])
        @locations = Location.all
        @test = "5"
    end

end

Что мне кажется странным, так это то, что @test правильно отображает изображение в нашем представлении map.html.erb. Как и ожидалось, 5 напечатано над картой:

<% @locations.each do |loc| %>

<% end %>

<div id="map_canvas">Random</div>

1 Ответ

1 голос
/ 31 октября 2012

Файл действительно запускается через ERB, но только один раз - когда приложение прекомпилирует ресурсы.И это не то, что вы можете изменить очень легко, и вы, вероятно, не должны пытаться.

Вместо этого вы можете получить фактические данные, которые вы хотите заполнить отдельно, с помощью запроса AJAX JSON или, возможно, встроить их как Javascript в шаблон страницы.

ERB-компиляция статических файлов (CSS + JS) обычно используется для помещения в среду специфических данных, которые не меняются при каждом запросе.

...