2017-04-04 24 views
1

我有一个页面,可以激活停用用户帐户 - 但在激活之前,他们需要分配一个新密码。目前我有两个按钮,执行以下操作:如何将动作调用附加到Rails中的提交按钮?

在“添加密码”形式的到底有此按钮:

在页面上
<%= f.submit %> 

稍远一点有这个按钮,这台用户状态为“活动”:

<%= standard_button 'Activate user', update_status_user_path(@user), 
:method => :patch %> 

如果可能,我想将第二个按钮的功能添加到提交按钮。

我不完全掌握表单和按钮背后的魔法,所以我想知道这是否可能,如果是的话,我该如何实现这一点?

回答

0

您可以将按钮想象成一个迷你表格。查看docs以获取有关button_to rails方法的更多信息。

在你的form_for中,将会有一个url指定表单发布到的位置。在该控制器方法中,可以包含将用户状态更新为“活动”的逻辑。类似于

def some_method 
    user = User.find(params[:user_id]) 
    user.update_attribute(:status, "active") 
end 
+0

当前表单发布到许多其他页面也使用的密码更改方法。所以如果可能的话,我宁愿避免在特定方法中进行更改。不可能有一个按钮做两件独立的事情 - 提交表单并调用一些操作? – Teresa

+0

或者我可能不太了解你的解决方案...... – Teresa

+1

表单只能发布到一个动作,以便动作必须处理更新用户状态。你可以使用javascript来更新用户状态,但这不是可取的。另一种选择是在表单中包含隐藏字段或数据属性。然后该操作可以检查隐藏字段并仅在隐藏字段存在时更新用户状态。或者,表单操作可以检查请求来自哪里,并且仅当请求来自特定页面时才更新用户状态。 – margo

相关问题