Ruby on rails 提交表单时调用操作
在我的Rails应用程序中,我使用简单的表单。在编辑视图中提交表单时,我想从UsersController调用一个操作 代码: edit.html.erb 我原以为用{:action=>confirm}%>替换提交行会有用,但实际上不行;在未调用操作cofirm的情况下更新了属性 我想我的问题是我试图调用两个操作,同时在UsersController中更新和确认。然而,我不知道如何解决这个问题Ruby on rails 提交表单时调用操作,ruby-on-rails,simple-form,Ruby On Rails,Simple Form,在我的Rails应用程序中,我使用简单的表单。在编辑视图中提交表单时,我想从UsersController调用一个操作 代码: edit.html.erb 我原以为用{:action=>confirm}%>替换提交行会有用,但实际上不行;在未调用操作cofirm的情况下更新了属性 我想我的问题是我试图调用两个操作,同时在UsersController中更新和确认。然而,我不知道如何解决这个问题 我想实现的是,如果用户更改了他的电子邮件,我想发送一封确认电子邮件来验证它。因此,当用户通过发送表单来
我想实现的是,如果用户更改了他的电子邮件,我想发送一封确认电子邮件来验证它。因此,当用户通过发送表单来更新其电子邮件属性时,我调用确认操作来发送包含参数的链接的电子邮件。当用户单击链接时,他将被引导到带有参数的应用程序。此代码可能会对您有所帮助,但您知道这是不是一个最好的主意吗
<%= simple_form_for( @user, :url => { :action => "confirm" }) do |f| %>
但此代码仅在提交表单时调用用户控制器的确认操作。如果您想在提交表单之前检查某些条件,那么可以使用jquery作为客户端验证。在控制器内部执行业务逻辑是个坏主意。让控制器仅处理渲染和重定向。您可以在回调或ActiveRecord::Observer的帮助下实现这一点。下面是回调示例
class User < ActiveRecord::Base
after_save :check_for_email_edits
def check_for_email_edits
if email_changed?
MyMailer.send_confirmation_instructions(self)
end
end
end
谢谢你的意见。您的方法调用确认操作而不是更新操作。我的结论是不可能从提交按钮调用两个操作。这是一个完美的解决方法。我怎么能不想到这种方法呢?
class User < ActiveRecord::Base
after_save :check_for_email_edits
def check_for_email_edits
if email_changed?
MyMailer.send_confirmation_instructions(self)
end
end
end