我的/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,创建,编辑,find_order, 包括,新,role_requirements, role_requirements =,title,title =和 更新
为什么移植表单的任何想法都不起作用?
答案 0 :(得分:0)
原来这个问题与SSL有关。这出现在日志中:
过滤链暂停为[:ensure_proper_protocol] rendered_or_redirected。
我在所需的SSL上有表单的页面,Rails不喜欢我将表单从SSL页面提交到非SSL页面。所以,作为一种解决方法,因为我正在使用ssl_requirement,所以我只是把
ssl_required :all
在password_resets控制器中,现在情况正常。