我是一个Rails noob。我不会说谎。我的任务是采用两种形式并将它们变成一种动态形式。这是一个登录/注册表单。我唯一的问题是如何处理代码的Rails部分。使用jQuery,我可以轻松地替换HTML表单操作,但是如何根据登录或注册无线电选择来替换rails代码中的操作/目标。
<%= form_tag login_path, :id => '_login_form' do %>
<% end %>
<%= form_tag sign_up_path, :id => '_sign_up_form' do %>
<% end %>
答案 0 :(得分: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
我希望这有帮助!
答案 1 :(得分:0)
如果对象仅使用一种表单,但要使不同的提交按钮执行不同的表单操作,则这似乎是提交输入中formaction
属性的理想用例。
请注意,formmethod
是另一个属性,如果您要做的只是更改方法。
以下是您可能会做的事情:
<%= submit_tag('Sign Up', formaction: 'user#create', formmethod: 'POST') %>
<%= submit_tag('Log In', formaction: 'user#login', formmethod: 'POST') %>
所有这些form *属性优先于form操作。