【问题标题】:Rails simple form routing issueRails 简单表单路由问题
【发布时间】:2013-04-15 03:30:26
【问题描述】:

我在 Rails 中有一个表单

<div class="page-header">
    <h3>Create Blah</h3>
</div>
<%= simple_form_for @blah do |f| %>
    <%= f.input :id %>
    <%= f.input :name %>
    <%= f.input :pho %>
    <%= f.input :fun %>
    <%= f.submit :class => 'btn btn-primary' %>
<% end %>
<br>

当我点击提交按钮时,代码会尝试去哪里?它是否调用blah_controller.rb 的create 方法?因为目前,我遇到了路由错误

Routing Error
uninitialized constant BlahsController

这里是BlahController#create 方法:

 def create
    authorize! :create, :blahs
    @blah = Blah.new(params[:blah])
    if @blah.save
      redirect_to admin_blah_path(@blah), :notice => 'New blah created!'
    else
      render :new
    end
 end

在我的rake routes,我有

    admin_blahs GET    /admin/blahs(.:format)                      admin/blahs#index
                POST   /admin/blahs(.:format)                      admin/blahs#create
 new_admin_blah GET    /admin/blahs/new(.:format)                  admin/blahs#new
edit_admin_blah GET    /admin/blahs/:id/edit(.:format)             admin/blahs#edit
     admin_blah GET    /admin/blahs/:id(.:format)                  admin/blahs#show
                PUT    /admin/blahs/:id(.:format)                  admin/blahs#update
                DELETE /admin/blahs/:id(.:format)                  admin/blahs#destroy

【问题讨论】:

  • 您能否显示在表单呈现之前创建 (at)blah 的控制器方法的代码?此外,如果 (at)bla.save 应该是 (at)blah.save [用 @ 替换 (at)]
  • 在我输入问题时发生了错字...对不起。
  • @elevine 这只是 (at)blah = Blah.new
  • 您是否检查了 html 以查看表单 action 属性是什么(即它被传递到的 URI)?
  • 不,我不确定你的意思。你能提供更多细节吗

标签: ruby-on-rails ruby forms routing


【解决方案1】:

看起来您的BlahsController 是一个命名空间控制器,位于Admin 模块下(即,它的完全限定名称是Admin::BlahsController)。如果是这样,在构建表单时,您还必须提供 :admin 命名空间,使用类似以下内容:

<%= simple_form_for [:admin, @blah] do |f| %>

请参阅“处理命名空间”部分下的Rails Guide to Form Helpers。

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多