4

私はRails初心者です。私は嘘をつきません。私は 2 つのフォームを取り、それらを 1 つの動的なフォームに変換するという任務を負っています。これはログイン/サインアップ フォームです。私が抱えている唯一の問題は、コードの Rails 部分を処理する方法です。jQuery を使用すると、HTML フォームのアクションを簡単に置き換えることができますが、ログインまたはサインアップのラジオ選択に基づいて、Rails コードのアクション/宛先を置き換えるにはどうすればよいでしょうか。

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

<%= form_tag sign_up_path, :id => '_sign_up_form' do %>
<% end %>
4

2 に答える 2

9

問題を解決するには 2 つの選択肢があります。

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

これが役立つことを願っています!

于 2012-11-12T16:52:52.683 に答える
1

オブジェクトが 1 つのフォームのみを使用することであるが、異なる送信ボタンが異なるフォーム アクションに移動する場合、それはformaction送信入力の属性の完全な使用例のように思えます。

MDN

formmethodメソッドを変更するだけの場合は、別の属性であることに注意してください。

これがあなたができることのアイデアです:

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

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

これらの form* 属性はいずれも、フォーム アクションよりも優先されます。

于 2020-01-20T16:23:51.820 に答える