2013-02-11 3 views
0

У меня есть следующие в моей projects_controller:Ошибка в Rails 3 маршрута?

def edit 
    @project = Project.find(params[:id]) 
    @project.current_step = @project.first_step 
    @user = current_user 
end 

И следующий маршрут в мой routes.rb:

resources :users do 
resources :projects 
end 

В моей views/users/show.html.erb у меня есть:

<%= link_to image_tag('img_blank.png'), edit_user_project_path, :class => "btn_edit_project" %>

и rake routes дает me:

... 
    edit_user_project GET /users/:user_id/projects/:id/edit(.:format)  projects#edit 
... 

Я все еще получаю ошибку:

`Routing Error: No route matches {:action=>"edit", :controller=>"projects"}` 

Я в конце остроумия на этом. Любая помощь?

ответ

2

edit_user_project_path ожидает аргументы: ваш @user и ваш @project:

<%= link_to image_tag('img_blank.png'), edit_user_project_path(@user, @project), :class => "btn_edit_project" %> 
+0

Да, что постоянные проблемы. Забавно, у меня был этот раздел кода, работающий в течение 3 недель и никогда не видел эту ошибку раньше. Возможно ли, что объявление нового ресурса в файле routes.rb могло сделать необходимым включение аргумента? – Matteo

+0

Хорошо, теперь, когда я нахожусь на самом деле, нажмите кнопку «NoMethodError in ProjectsController # edit» со следующим выходом: '{" user_id "=>" 1 ", " id "=>" # "}' Я не понимаю, почему Rails возвращает ссылку на ActiveRecord вместо id проекта. – Matteo

+0

Вместо этого вы можете попробовать '@ product.id'. Хотя с кодом '@project = Project.find ... 'он не должен назначать ActiveRecord :: Relation для' @ project' - вы вообще изменили свой код контроллера? –

Смежные вопросы