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

以及一个名为 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 方法,因为 /password_resets 发生 POST 时会调用 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] 渲染或重定向而停止。

我在所需的 SSL 上有表单的页面,Rails 不喜欢我将表单从 SSL 页面提交到非 SSL 页面。所以,作为一种解决方法,因为我使用的是 ssl_requirement,所以我只是把

ssl_required :all

在 password_resets 控制器中,现在一切正常。

于 2011-02-23T21:05:37.840 回答