0

同じフォームのレールで2つのボタンを機能させようとしています。ユーザーの追加ボタンとサインアップボタンの両方を備えたログインフォームがあります。コントローラーには、これら 2 つの異なる要求を既に処理する 2 つのメソッドがあります。

ただし、追加のパラメーターを使用して解析して、どのボタンが呼び出されたかを判断することについての提案を読みました。このソリューションでは、解析を行うために別のコントローラー メソッドを使用した間接的なレベルが必要ではないでしょうか? コントローラーに別のコントローラーを呼び出すことは、MVC の適切なプラクティスではないことを読みました。この場合、MVC コントローラー クラス内で別のメソッドを呼び出すことは悪い習慣でしょうか?

私のフォーム:

<%= form_tag("users/delegate", :method=>"post") do %>
    <%= label_tag(:user, "Username:") %>
    <%= text_field_tag(:user) %>
    <br/><br/>
    <%= label_tag(:password, "Password:") %>
    <%= password_field_tag(:password) %>
    <br/><br/>
    <%= submit_tag "Login", :name=>'login' %>
    <%= submit_tag "Add User" %>
<% end %>

また、投稿リクエストから他のメソッドに引数を渡すにはどうすればよいですか? 私は基本的にそうしましたが、引数が渡されていません。他のメソッドにパラメーターを渡す必要がありますか? グローバル変数ですか?

def delegate
    if params[:login]
      login_post()
    else
      add_post()
    end
  end

def login_post
    user = params[:user]
    password = params[:password]
    errCode = UserModel.login(user,password)
    if (errCode>0)
        count = errCode
        errCode = 1
    end
    final_obj = {:errCode=> errCode, :count=>count}
    respond_to do |format|
        format.json { render :json=>final_obj, :status=>200}
    end
  end
4

1 に答える 1

0

次のようにする必要があります。

def delegate
  if params[:login]
    login_post(params[:user], params[:password])
  else
    add_post()
  end
end

def login_post(user, password)
  #do your things
end
于 2013-02-15T18:52:27.873 に答える