我写了下面的表格:
<% remote_form_for :login,
:url => {:controller => :usuarios, :action => :login },
:html => { :multipart => true } do |f| %>
<p class="login_field">
Login:<br />
<%= f.text_field 'login' %>
</p>
<p class="login_field">
Clave:<br />
<%= f.password_field 'clave' %>
</p>
<br />
<p align ="right">
<%= f.submit 'Ingresar' %>
</p>
<p class="forgot">
<%= link_to "Olvidó su clave?", { :controller => 'usuarios', :action => 'olvido_contrasena', :login => }, :post => true %>
</p>
<br />
<p id="error_msg_login"></p>
<% end %>
现在,在我的 Controller 中我有:
def olvido_contrasena
if request.post?
u= Usuario.find_by_login(params[:login][:login])
puts u.email
if u and u.enviar_nueva_clave
flash[:message] = "Una nueva clave ha sido enviada a su correo electronico."
redirect_to :action=>'login'
else
flash[:warning] = "No se pudo enviar la nueva clave."
puts "fail"
redirect_to "/admin_main"
end
end
end
但是,我有两个问题:
- 该操作称为 GET(它应该是 POST)。
- 没有发送参数[:login][:login]....
我可以在这里做什么?
谢谢!
我通过在用户单击“忘记密码”链接后添加带有新表单的新 View 来解决我的问题。 最简单、最干净的解决方案。
最佳答案
基本上 -
您正在单击链接,该链接不会提交您创建的表单,但“提交”按钮可以提交它。
当您单击链接时,这将发送 GET 请求。如果您想发送带有表单数据的 post 请求,您可以使用 javascript 事件监听器在单击链接时提交表单。
由于未提交表单,您将获得 login[login] 为 nil。
要使用 javascript 提交表单,您将使用 jquery 执行类似的操作 -
$(".linkClass").click(function(event){
event.preventDefault(); //This will stop get request.
$("#formId").submit();
})
关于ruby-on-rails - 将参数传递给 link_to rails 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430843/