Question

J'utilise AmCharts et rails. AmCharts utilise le Magic Image lib pour exporter une image du graphique. Dans des rails cela se fait avec la pierre précieuse, rmagic.

Dans un dispositif de commande est mis en oeuvre ce procédé avec le contrôleur suivant:

  def export
    width = params[:width].to_i
    height = params[:height].to_i
    data = {}
    img = Magick::Image.new(width, height)
    height.times do |y|
      row = params["r#{y}"].split(',')
      row.size.times do |r|
        pixel = row[r].to_s.split(':')
        pixel[0] = pixel[0].to_s.rjust(6, '0')
        if pixel.size == 2
          pixel[1].to_i.times do
            (data[y] ||= []) << pixel[0]
          end
        else
          (data[y] ||= []) << pixel[0]
        end
      end
      width.times do |x|
        img.pixel_color(x, y, "##{data[y][x]}")
      end
    end
    img.format = "PNG"
    send_data(img.to_blob , :disposition => 'inline', :type => 'image/png', :filename => "chart.png?#{rand(99999999).to_i}")
  end

Lorsque le contrôleur est accessible cependant, je reçois cette erreur sur la page:

The change you wanted was rejected.

Maybe you tried to change something you didn't have access to.

Et cette erreur dans les journaux (son fonctionnement sur Heroku BTW):

    ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
  /home/heroku_rack/lib/static_assets.rb:9:in `call'
  /home/heroku_rack/lib/last_access.rb:25:in `call'
  /home/heroku_rack/lib/date_header.rb:14:in `call'
  thin (1.0.1) lib/thin/connection.rb:80:in `pre_process'
  thin (1.0.1) lib/thin/connection.rb:78:in `catch'
  thin (1.0.1) lib/thin/connection.rb:78:in `pre_process'
  thin (1.0.1) lib/thin/connection.rb:57:in `process'
  thin (1.0.1) lib/thin/connection.rb:42:in `receive_data'
  eventmachine (0.12.6) lib/eventmachine.rb:240:in `run_machine'
  eventmachine (0.12.6) lib/eventmachine.rb:240:in `run'
  thin (1.0.1) lib/thin/backends/base.rb:57:in `start'
  thin (1.0.1) lib/thin/server.rb:150:in `start'
  thin (1.0.1) lib/thin/controllers/controller.rb:80:in `start'
  thin (1.0.1) lib/thin/runner.rb:173:in `send'
  thin (1.0.1) lib/thin/runner.rb:173:in `run_command'
  thin (1.0.1) lib/thin/runner.rb:139:in `run!'
  thin (1.0.1) bin/thin:6
  /usr/local/bin/thin:20:in `load'
  /usr/local/bin/thin:20

Rendering /disk1/home/slugs/149903_609c236_eb4f/mnt/public/422.html (422 Unprocessable Entity)

Quelqu'un a une idée de ce qui se passe ici?

Était-ce utile?

La solution

Je l'ai pensé à elle:

ajouté: require 'RMagick'

&

skip_before_filter: verify_authenticity_token

à ma classe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top