1

/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 %>

create メソッドを含む PasswordResetsController と呼ばれるコントローラーと共に:

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 メソッドが適切に呼び出されます。これは、POST が /password_resets に発生したときに PasswordResetsController::create() メソッドが呼び出されるためです。

ただし、フォームを別のビュー、たとえば /app/views/test/index.html.erb に配置すると、フォームに記入して送信すると、

不明なアクション

インデックスに応答するアクションはありません。アクション: access_forbidden、admin_created?、check_roles、create、edit、find_order、included、new、role_requirements、role_requirements=、title、title=、および update

フォームの移植が機能しない理由はありますか?

4

1 に答える 1

0

問題はSSLに関連していることが判明しました。これはログに表示されました:

[:ensure_proper_protocol]rendered_or_redirectedとしてフィルターチェーンが停止しました。

必要なSSLに関するフォームを持っていたページで、RailsはSSLページから非SSLページにフォームを送信することを好みませんでした。したがって、回避策として、ssl_requirementを使用しているので、

ssl_required :all

password_resetsコントローラーで、これで動作します。

于 2011-02-23T21:05:37.840 に答える