Не найдено ни одного маршрута "/ userhome / 18 / edit_reviewer_email" - PullRequest
0 голосов
/ 14 июля 2011

Тестовая строка, которую я установил в контроллере, не печатается в консоли ... поэтому действие возвращается к 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"

route:

  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)

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 15 июля 2011

Хорошо, так что у вас есть

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

, который должен выполнить запрос POST к /userhome/18/update_reviewer_email, однако в журнале у вас есть

Started POST "/userhome/18/edit_reviewer_email" 

, который явно не соответствует ни одному из ваших маршрутовчтобы исправить это, попробуйте изменить форму на

<%= form_for :user, @user, :url => update_reviewer_email_userhome_path do |f| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...