Что с плохим вызовом функции, созданным через скаффолд? - PullRequest
0 голосов
/ 01 апреля 2010

Элемент вещей В лесах:

script/generate scaffold wip/thing name:string

и получил недопустимый вызов функции в представлениях, например:

<td><%= link_to 'Edit', edit_thing_path(thing) %></td>

Которые вызывают эту ошибку:

ActionView::TemplateError (undefined method `edit_thing_path' for #<ActionView::Base:0xb5c00944>) on line #11 of app/views/wip/things/index.html.erb:                                                                                                                                 
8:   <tr>                                                                                                                                  
9:     <td><%=h thing.name %></td>
10:     <td><%= link_to 'Show', thing %></td>
11:     <td><%= link_to 'Edit', edit_thing_path(thing) %></td>
12:     <td><%= link_to 'Destroy', thing, :confirm => 'Are you sure?', :method => :delete %></td>
13:   </tr>
14: <% end %>

Что за функция? Где это находится? Это какие-то автоматические вещи или мне нужно их реализовать (если так - куда это должно идти?)

У меня есть ресурс, определенный в маршрутах с пространством имен:

  map.namespace :wip do |wip|
    wip.resources :things
  end

маршруты рейка дают мне это:

                                wip_things GET    /wip/things(.:format)                                                            {:action=>"index", :controller=>"wip/things"}
                                           POST   /wip/things(.:format)                                                            {:action=>"create", :controller=>"wip/things"}
                             new_wip_thing GET    /wip/things/new(.:format)                                                        {:action=>"new", :controller=>"wip/things"}
                            edit_wip_thing GET    /wip/things/:id/edit(.:format)                                                   {:action=>"edit", :controller=>"wip/things"}
                                 wip_thing GET    /wip/things/:id(.:format)  

Я предположил, что эти имена (wip_thing, new_wip_thing) являются правильными именами, но это все равно дает мне эту ошибку

Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2010

Этот метод взят из вашего файла rout.rb. Если у вас есть resource: thing define, все эти методы определены в вашем контроллере / представлениях.

Проверьте файл config/routes.rb, если вы:

map.resources :things

Если у вас нет этого ресурса, этот метод не определен.

Проверьте этот ресурс в руководствах по Ruby on Rails: http://guides.rubyonrails.org/routing.html

Вы можете узнать все эти маршруты с помощью граблей:

rake routes

0 голосов
/ 09 апреля 2010

понял! Метод должен быть таким, как предложено

rake routes

но должен иметь суффикс _path:

<%= link_to 'Edit', edit_wip_thing_path(@thing) %>
...