我有一个Rails控制器,其中包含new
和create
的方法。这是我的主要表格,我知道这些行为是如何运作的。
我还使用较小的一个字段形式创建了另一个视图。如果用户点击此表单上的提交,我想执行操作。
我创建了一个包含get和post动作的路线
match "/redemption", to: "accounts#redemption", via: [:get, :post]
在我的accounts#new
操作中,用户可以购买帐户。他们会获得兑换码。
我决定制作一个新视图,如果他们已经有了代码,他们就可以输入。
逻辑对我来说相当容易,但我需要知道如何对此进行操作。
这是表单,我想在
上执行操作<%= form_tag('/redemption') %>
<%= label_tag 'Enter your Redemption Code' %>
<%= text_field_tag 'Redemption Code' %>
<%= submit_tag("Redeem") %>
我不确定如何做到这一点,因为它并不涉及新的和创建动作。它们保留用于不同的目的。
答案 0 :(得分:1)
您需要让表单声明一个块并将提交标记放在其中。这将使按钮发布到您的兑换操作。然后你就像正常一样访问params哈希。
<%= form_tag('/redemption') do %>
<%= label_tag 'Enter your Redemption Code' %>
<%= text_field_tag :redemption, 'Redemption Code' %>
<%= submit_tag("Redeem") %>
<% end %>
然后在你的AccountsController
中def redemption
call_redeem_action params[:redemption]
end
如果您愿意,也可以为路线命名..
match "/redemption", to: "accounts#redemption", via: [:get, :post], as: :redemption
然后你的表格将是
<%= form_tag redemption_path do %>
我觉得更容易,因为如果你需要重命名uri,你可以在一次调整它。
答案 1 :(得分:0)
submit_tag调用form_for指定的操作,如果未指定任何操作,则默认为当前操作,在这种情况下是“赎回”#39; Doon在下面说明。所以使用:action =&gt; &#39;你的行动&#39;可能会更清楚。更多信息here。