Railsのスキャフォールドを使用して、フォームとビューを自動的に生成しました。しかし今、私はルート名前空間のモデルで名前空間化されたコントローラーを使用しなければなりませんでした。
そのため、スキャフォールドを使用せずに手動でコントローラーを生成しました。フォームの操作に問題があります。
次のコードは、名前空間付きコントローラーのフォームを生成する必要があると思います
<%= form_for @menu do |f| %>
<div class="field">
<%= f.label :label %><br />
<%= f.text_field :label %>
</div>
<div class="field">
<%= f.label :order %><br />
<%= f.text_field :order %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
しかし、そうではありません。それは言う
undefined method `model_name' for NilClass:Class
スキャフォールドジェネレーターを使用してレールを作成するのは非常に簡単なようですが、手動で実行したい場合は、レールヘルパーメソッドがネガティブになります。
form_forドキュメントを検索し、コードを次のように変更しました
<%= form_for @menu, :url => admin_menu_path do |f| %>
次に、別のエラーが表示されます
No route matches {:action=>"show", :controller=>"admin/menus"}
私のレーキルートは次の出力を提供します
admin_root /admin(.:format) admin/menus#index
admin_menus GET /admin/menus(.:format) admin/menus#index
POST /admin/menus(.:format) admin/menus#create
new_admin_menu GET /admin/menus/new(.:format) admin/menus#new
edit_admin_menu GET /admin/menus/:id/edit(.:format) admin/menus#edit
admin_menu GET /admin/menus/:id(.:format) admin/menus#show
PUT /admin/menus/:id(.:format) admin/menus#update
DELETE /admin/menus/:id(.:format) admin/menus#destroy
私が間違っている場合は訂正してください。しかし、rubyはAdmin名前空間でモデルメニューを見つけることができないと思います。これは明らかです。そこで、:: Menu.newを試してみましたが、上位の名前空間で検索されると思いましたが、結果はありませんでした。