0

UserモデルとAccountコントローラーがあります。ユーザーが/accountURL にアクセスすると、ユーザー名を含むテキスト フィールドとフォームを送信するためのボタンを含むフォームが表示されます。

私はmatch '/account' => 'account#index'自分のルートにいます。

私のコントローラーでは、次のメソッドが定義されています。

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

(ユーザー認証の確認は で行われます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 に答える