我有一个User
模型和一个Account
控制器。当用户访问/account
网址时,它应该会显示一个表单,其中包含一个文本字段,其中包含用户名和一个提交表单的按钮。
我的路线中有match '/account' => 'account#index'
。
在我的控制器中,我定义了这个方法:
def index
@user = User.find(session[:user_id])
end
(检查用户身份验证是否发生在before_filter
)
现在表单显示正确,甚至可以正确填充。但是,我需要知道如何判断表单是否已提交。什么是铁轨方式?我是否有单独的路线来监视POST
对/account
的请求?或者我在index
方法中检测到请求类型?我在什么时候决定是否已提交表格?
答案 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