检测是否显示或处理基于GET或POST的表单

时间:2012-04-27 21:07:13

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

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

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

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

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

(检查用户身份验证是否发生在before_filter

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

1 个答案:

答案 0 :(得分:1)

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

另一种方法是重做您的路线。你可以做{而不是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