在导轨中的两个按钮

时间:2013-02-15 18:47:44

标签: ruby-on-rails ruby-on-rails-3

我正在尝试让两个按钮在相同形式的轨道中工作。我有一个包含添加用户和注册按钮的登录表单。我的控制器中有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 %>

另外,如何将post请求中的参数传递给另一个方法?一世 基本上没有,但争论没有通过。我是否需要将params传递给另一种方法?它是一个全局变量吗?

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

1 个答案:

答案 0 :(得分: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