Спасибо тонны Vonconrad! Я очень ценю помощь.

кли проблемы с маршрутизацией некоторых вложенных ресурсов. Я пытаюсь сделать ссылку на страницу профиля пользователя для редактирования. На мой взгляд это написано как:

<%= link_to "Edit Profile", edit_user_profile_path(current_user) %>

Какие ошибки с:

No route matches {:action=>"edit", :controller=>"profiles", :user_id=>#<User id: 1, email: "EDITEDOUT", hashed_password: "EDITEDOUT", created_at: "2011-01-20 18:30:44", updated_at: "2011-01-20 18:30:44">}

В моем файле rout.rb это выглядит так:

resources :users do
  resources :profiles, :controller => "profiles"
end  

Я проверил свои маршруты Rake, и это дало мне это в качестве действительной опции:

edit_user_profile GET    /users/:user_id/profiles/:id/edit(.:format)   {:action=>"edit", :controller=>"profiles"}

К которому я могу вручную перейти. Для хороших мер, вот доказательство моего контроллера:

class ProfilesController < ApplicationController
  def edit
    @user = current_user
    @profile = current_user.profile
  end

  def update
    @user = current_user
    @profile = current_user.profile


    respond_to do |format|
      if @profile.update_attributes(params[:profile])
        format.html { redirect_to(orders_path, :notice => "Your profile has been updated.") }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @profile.errors, :status => :unprocessable_entity }
      end
    end
  end
end

Во всяком случае, у меня были некоторые проблемы с отслеживанием этого. Любые указатели помогут. Для моего дизайна БД Профили принадлежат Пользователям в отношениях один-к-одному. Я надеюсь, что это просто что-то новенькое, я не замечаю, что новый набор глаз может помочь.

Ответы на вопрос(1)

Решение Вопроса

вы увидите, что он ожидает:user_id и:id, Последнее в данном случае относится к профилю пользователя.

Чтобы сообщить Rails, что вы хотите этот конкретный профиль, вам нужно указать как пользователя, так и профиль в вашей ссылке, например:

edit_user_profile_path(current_user, @profile)

Теперь Rails будет использовать первый аргумент (current_user) для:user_id часть маршрута, а второй аргумент (@profile) для:id.

 Kombo21 янв. 2011 г., 02:42
Спасибо тонны Vonconrad! Я очень ценю помощь.

Ваш ответ на вопрос