Wczoraj walczyłem z tym przez jakiś czas, ale nie mam już innych pomysłów.
Jest sobie taki routing:
namespace :editor do
resources :farms, except: [:edit, :destroy], path: '/' do
collection do
get 'search'
end
# jakieś tam dalej nested resources
end
end
FarmsController (app/controllers/editor/farms_controller.rb)
[code]module Editor
class FarmsController < EditorController
skip_before_filter :search_farm, :only => [:index, :new, :create]
# Jest to filtr, który w gruncie rzeczy robi @farm = Farm.find(params[:id])
def new
@farm = Farm.new
end
def create
end
end
end[/code]
W EditorController, który jest rodzicem FarmsController nie ma nic szczególnego - filtr :search_farm i layout ‘editorlay’. I właściwie tyle.
app/views/editor/farms/new.html.erb
<%= form_for [:editor, @farm] do |f| %>
Imię: <%= f.text_field :imie %><br/>
Nazwisko: <%= f.text_field :nazwisko %><br/>
<%= f.submit "Utwórz" %>
<% end %>
Gdy próbuję przejść do tego formularza, railsy wyrzucają mi błąd:
[code]No route matches {:action=>“show”, :controller=>“editor/farms”, :id=>#<Farm id: nil, (i tutaj pozostałe atrybuty, wszystkie mają nil, tak jak to zawsze ma Farm.new)>}
Try running rake routes for more information on available routes.[/code]
Co mi kompletnie nic nie mówi, pojęcia nie mam czemu jest akcja ‘show’ i czemu w id jest model, zamiast model.id.
rake routes wygląda normalnie, ale wkleję jeszcze: (wycięte nested resources)
search_editor_farms GET /editor/search(.:format) editor/farms#search
editor_farms GET /editor(.:format) editor/farms#index
POST /editor(.:format) editor/farms#create
new_editor_farm GET /editor/new(.:format) editor/farms#new
editor_farm GET /editor/:id(.:format) editor/farms#show
PUT /editor/:id(.:format) editor/farms#update
Mógłby mnie naprowadzić ktoś na jakiś trop, gdzie powinienem szukać przyczyn tego błędu?