Форма Rails не вызывает метод create controller на POST - PullRequest
1 голос
/ 22 февраля 2011

У меня есть следующая форма в моем /app/views/password_resets/new.html.erb представлении

<% form_tag password_resets_path do %>
  <label><%= t(:email) %>:</label><br />
  <%= text_field_tag "email" %><br />
  <br />
  <%= submit_tag t("reset_password") %>
<% end %>

вместе с контроллером PasswordResetsController, содержащим метод create:

def create
  @user = User.find_by_email(params[:email])
  if @user
    @user.deliver_password_reset_instructions!
    self.notice = t("password_reset_instructions_are_mailed")
    redirect_to root_url
  else
    flash[:error] = t("no_user_found")
    render :action => :new
  end
end

Когда я захожу в / password_resets / new, заполняю форму и отправляю, метод create вызывается должным образом, так как метод PasswordResetsController :: create () вызывается, когда POST происходит с /password_resets.

Однако, когда я помещаю форму в другое представление, скажем, /app/views/test/index.html.erb, заполняя форму, отправляю, я получаю

Неизвестное действие

Ни одно действие не отреагировало на индекс. Действия: access_forbidden, admin_created ?, check_roles, создать, редактировать, find_order, включены, новые, role_requirements, role_requirements =, title, title = и обновление

Есть идеи, почему пересадка формы не работает?

1 Ответ

0 голосов
/ 24 февраля 2011

Оказывается, проблема была связана с SSL. Это обнаружилось в журнале:

Цепочка фильтров остановлена ​​как [: sure_proper_protocol] rendered_or_redirected.

Страница, на которой у меня была форма с требуемым SSL, и Rails не понравилось, что я отправляю форму со страницы SSL на страницу без SSL. Итак, в качестве обходного пути, так как я использую ssl_requirement, я просто положил

ssl_required :all

в контроллере password_resets, и теперь все работает.

...