Rails: Почему эта форма вызывает неправильное действие? - PullRequest
0 голосов
/ 21 мая 2011

В моем приложении есть форма, которая вызывает неправильное действие контроллера.Вот представленная форма:

<form id="edit_profile_1" class="simple_form profile windowed" method="post" enctype="multipart/form-data" action="/profiles/1" accept-charset="UTF-8">
  <div style="margin:0;padding:0;display:inline">
  <input type="hidden" value="✓" name="utf8">
  <input type="hidden" value="put" name="_method">
  <input type="hidden" value="..." name="authenticity_token">
  </div>
....
</form>

Итак, почти нормальная форма.В моей локальной среде это работает нормально, запускает действие profiles#update.Однако при развертывании на Heroku по какой-то причине это вызывает действие profiles#show и поэтому не работает.

Что дает?Кто-нибудь сталкивался с этой ошибкой раньше, и знаете ли вы, как ее исправить?

-EDIT- @Laas: Вот производственный журнал:

2011-05-20T21:41:38+00:00 app[web.1]: Started GET "/account" for 98.201.59.6 at 2011-05-20 14:41:38 -0700
2011-05-20T21:41:40+00:00 heroku[router]: GET www.fourthenvironment.org/account dyno=web.1 queue=0 wait=0ms service=2212ms bytes=8672
2011-05-20T21:41:40+00:00 app[web.1]: Connected to NewRelic Service at collector-6.newrelic.com:80
2011-05-20T21:41:40+00:00 heroku[router]: GET www.fourthenvironment.org/javascripts/rails.js dyno=web.1 queue=0 wait=0ms service=2ms bytes=5176
2011-05-20T21:41:41+00:00 heroku[router]: GET www.fourthenvironment.org/javascripts/jquery.144.min.js dyno=web.1 queue=0 wait=0ms service=3ms bytes=78865
2011-05-20T21:41:42+00:00 heroku[router]: GET www.fourthenvironment.org/stylesheets/style.css dyno=web.1 queue=0 wait=0ms service=3ms bytes=63444
2011-05-20T21:41:47+00:00 heroku[router]: GET www.fourthenvironment.org/favicon.ico dyno=web.1 queue=0 wait=0ms service=4ms bytes=1672
2011-05-20T21:41:50+00:00 app[web.1]: 
2011-05-20T21:41:50+00:00 app[web.1]: 
2011-05-20T21:41:50+00:00 app[web.1]: Started POST "/profiles/1" for 98.201.59.6 at 2011-05-20 14:41:50 -0700
2011-05-20T21:41:50+00:00 heroku[router]: POST www.fourthenvironment.org/profiles/1 dyno=web.1 queue=0 wait=0ms service=102ms bytes=420
2011-05-20T21:41:50+00:00 app[web.1]: THIS SHOULD NOT BE TRIGGERED
2011-05-20T21:41:50+00:00 heroku[router]: GET www.fourthenvironment.org/profiles/1 dyno=web.1 queue=0 wait=0ms service=30ms bytes=414
2011-05-20T21:41:50+00:00 app[web.1]: 
2011-05-20T21:41:50+00:00 app[web.1]: 
2011-05-20T21:41:50+00:00 app[web.1]: Started GET "/account" for 98.201.59.6 at 2011-05-20 14:41:50 -0700

Обратите внимание: «ЭТО НЕ ДОЛЖНО БЫТЬ СОВЕРШЕНО»».Вот контроллер:

class ProfilesController < ApplicationController
    before_filter :authenticate_user!

    def show
        puts "THIS SHOULD NOT BE TRIGGERED"
        redirect_to account_path
    end


    def edit
        @profile = Profile.find(params[:id])
    end

    def update
        puts "profiles#update"
        @profile = Profile.find(params[:id])
        if @profile.update_attributes(params[:profile])
            redirect_to account_path, :notice => t('user.notice.updated')
        else
            render :action => 'edit'
        end
    end

end

Ответы [ 3 ]

1 голос
/ 13 июня 2011

Оказывается, проблема была связана с использованием SSL-Requirement Gem. По какой-то причине, если вы отправляете запрос со страницы SSL на страницу без SSL при использовании требования SSL, он перенаправляется. Итак, для исправления включите SSL-требование на обоих концах запроса, и оно будет работать. Похоже, что переходя с SSL на не SSL, доступ к которому дает только гем - отсюда и ошибка. Начиная с Rails 3.1 это выглядит неактуальным, так как будет добавлена ​​новая функциональность требований SSL, и гем не потребуется.

Большое спасибо персоналу Heroku за помощь в изоляции этого.

0 голосов
/ 21 мая 2011

Почему тег формы жестко запрограммирован?Используйте помощник form_tag

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html

0 голосов
/ 21 мая 2011

Кажется, идентично этой проблеме routing-questions-with-multi-part-forms-on-heroku .

Поскольку ему всего несколько дней, может быть, это не совпадение и что-то не так с Героку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...