0

我有一个User模型和一个Account控制器。当用户访问/accounturl 时,它应该显示一个表单,其中包含一个包含用户名的文本字段和一个提交表单的按钮。

我有match '/account' => 'account#index'我的路线。

在我的控制器中,我定义了这个方法:

def index
  @user = User.find(session[:user_id])
end

(检查用户身份验证发生在 a 中before_filter

现在表单正确显示,甚至正确填充。但是,我需要知道如何判断表单是否已提交。什么是铁轨方式?我是否有一条单独的路线来监视对 的POST请求/account?还是我在index方法中检测请求类型?我在什么时候决定表格是否已提交?

4

1 回答 1

1

您可以检测表单是否已在索引控制器内部提交。我相信 params 哈希将密钥 :method 设置为用于请求的方法。

另一种方法是重做您的路线。而不是match '/account' => 'account#index'你可以这样做:

get '/account' => 'account#index'
post '/account' => 'account#post_action'

然后在您的控制器内部,您可以执行以下操作:

def index
  @user = User.find session[user_id]
end

def post_action
  @user = User.find session[user_id]
  if @user.update_attributes params[:user]
    flash[:notice] = 'Update Successful'
    render :action => index
  else
    flash[:notice] = 'Update Unsuccessful'
    render :action => index
  end
end
于 2012-04-27T21:17:55.180 回答