ruby-on-rails - 如何在 rails namspaced Controller 中处理 form_for

标签 ruby-on-rails namespaces form-for

我曾使用 rails scaffold 自动生成表单和 View 。
但是现在我不得不在根 namspace 中使用带有模型的命名空间 Controller 。

所以,我在没有脚手架的情况下手动生成了 Controller ,我在使用表单时遇到了麻烦。

我想下面的代码应该为命名空间 Controller 生成一个表单

<%= 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

用脚手架生成器做 rails 似乎很容易,但如果你想手动做,rails 辅助方法会对它们产生负面影响。

我已经搜索了 form_for 文档并将代码更改为
<%= form_for @menu, :url => admin_menu_path do |f| %>

然后它显示了一个不同的错误
No route matches {:action=>"show", :controller=>"admin/menus"}

我的 rake 路线给出了以下输出
     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 ,我认为它会在上层命名空间中查找,但没有结果!

最佳答案

您可能忘记实例化 @menu在您的 Controller 中。

消息“NilClass:Class 的未定义方法‘model_name’”表示 @menunil .

admin_menu_path需要一个Menu实例,当nil时Rails无法正确生成路由通过。

在 Controller 中正确设置实例变量后,您可以使用:

form_for [:admin, @menu] do |f| ... end

关于ruby-on-rails - 如何在 rails namspaced Controller 中处理 form_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12487558/

相关文章:

ruby-on-rails - 如何将从 rails 中的 date_select 返回的哈希值转换为 Date 对象?

c# - 如何在C#中相同命名空间的另一个窗口中编写代码

ruby-on-rails - Rails simple_form - 隐藏字段 - 创建?

javascript - 许多对象的模态 Rails Form_for

ruby-on-rails - 可以在 form_for helper rails 3 中发送多种格式

ruby-on-rails - 为什么我无法在 Redmine 中添加新问题?

ruby-on-rails - Cassandra 生产是否已为 Ruby on Rails 做好准备?

mysql - cron 作业中的 Rails 类方法在弹性 beantalk 中不起作用

c++ - "Expected unqualified-id before ' 命名空间 '"错误

python - 避免在实例变量定义中执行