Rails - 根据单选按钮选择更改表单操作

4

我是一个Rails的初学者,不否认这点。我的任务是把两个表单合并成一个动态表单。这是一个登录/注册表单。唯一的问题是如何处理Rails部分的代码。使用jQuery,我可以很容易地替换HTML表单操作,但是如何根据登录或注册单选按钮选择替换Rails代码中的操作/目标呢。

<%= form_tag login_path, :id => '_login_form' do %>
<% end %>

<%= form_tag sign_up_path, :id => '_sign_up_form' do %>
<% end %>
2个回答

9

我看到解决您问题的两个选项。

使用 JavaScript,您可以根据所选的单选按钮更改表单的操作。

$("#radio").change(function() {
  var action = $(this).val() == "some_value" ? "login" : "sign_up";
  $("#your-form").attr("action", "/" + action);
});

或者你可以在一个操作中处理这两种方法,并将每个选项分开处理。
#view
<p> <%= radio_button_tag :option, "login" %> Orange </p>
<p> <%= radio_button_tag  :option, "sign_up" %> Peach </p>

#controller
if params[:option] == "login"
  #do login
elsif params[:option] == "sign_up"
  #do sign up
end

我希望这能有所帮助!

:option是如何传递给控制器的? - Code-MonKy

1
如果目标是只使用一个表单,但要有不同的提交按钮去不同的表单操作,那么这似乎是formaction属性在提交输入上的完美应用案例。

MDN

请注意,formmethod是另一个属性,如果你只想改变方法。

以下是你可能会做的事情的想法:

  <%= submit_tag('Sign Up', formaction: 'user#create', formmethod: 'POST') %>

  <%= submit_tag('Log In', formaction: 'user#login', formmethod: 'POST') %>

任何这些表单属性都优先于表单操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接