2011-07-14 18 views
0

コントローラに設定したテストラインがコンソールに出力されていないため、定義されたルートに従わずにアクションがedit_reviewer_emailに戻ります。ここにコードがあります。"/ userhome/18/edit_reviewer_email"と一致するルートがありません

edit_reviewer_email:

<%= form_for :user, @user, update_reviewer_email_userhome_path do |f| %> 
    <%= f.text_field :email %> 
    <%= f.submit "Update Email" %> 
<% end %> 

警告:

DEPRECATION WARNING: Using form_for(:name, @resource) is deprecated. Please use form_for(@resource, :as => :name) instead. 

userhome_controller:

def update_reviewer_email 
    p "***" # test line 
    @user = User.find(params[:id]) 

    respond_to do |format| 
     if @user.update_attributes(params[:user]) 
     format.html { redirect_to(root_path, :notice => 'Email was successfully updated.') } 
     format.xml { head :ok } 
     else 
     format.html { render :action => "edit_reviewer_email" } 
     format.xml { render :xml => @user.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

エラー:

No route matches "/userhome/18/edit_reviewer_email" 

ルート:

resources :userhome, :except => [:show, :new, :edit, :update, :destroy] do 
    member do 
     get :edit_reviewer_email 
     post :update_reviewer_email 
    end 
    end 

すくい路線:

update_reviewer_email_userhome POST /userhome/:id/update_reviewer_email(.:format) {:action=>"update_reviewer_email", :controller=>"userhome"} 

ログファイル:あなたの助けのための

Started POST "/userhome/18/edit_reviewer_email" for 127.0.0.1 at 2011-07-15 09:36:52 -0400 

ActionController::RoutingError (No route matches "/userhome/18/edit_reviewer_email"): 

Rendered /Users/me/.rvm/gems/ruby-1.9.2-p180/gems/actionpack-3.0.8/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.7ms) 

感謝。

+0

に変更してください。あなたのフォームを変更しようとしましたか?また、ログファイル – Bohdan

+0

@BohdanPohoriletsからコードの塊を投稿してください。いいえ... form_forコードは上記と同じです。問題の残りの部分を解決した後、私は非推奨警告について心配していました。 – Jay

答えて

1

[OK]を、あなたは明らかにそれを修正するためにあなたの経路のいずれかに一致しない

Started POST "/userhome/18/edit_reviewer_email" 

を持っているログにただし/userhome/18/update_reviewer_emailにPOSTリクエストを行う必要があります

<%= form_for :user, @user, update_reviewer_email_userhome_path do |f| %> 

を持っているので、試してみてくださいフォームを

<%= form_for :user, @user, :url => update_reviewer_email_userhome_path do |f| %> 
+0

ありがとう!それはうまくいった。 – Jay