【问题标题】:rails admin edit view path routesrails admin 编辑视图路径路由
【发布时间】:2010-08-22 22:15:23
【问题描述】:

我已经设置了一个管理部分,但无法让“更新”路由正常工作。

通过编辑视图点击“更新”时出错:
“对 2 没有任何响应。”

由于某种原因,路由响应 :id 作为 :action。

参数:
参数:{"commit"=>"Update", "action"=>"2", "_method"=>"put", "admin"=>{"ended_at(1i)"= >"2010", "ended_at(2i)"=>"8", "ended_at(3i)"=>"22"}, "id"=>"edit", "controller"=>"admin/subscriptions"}

编辑视图 uri:
/admin/subscriptions/2/edit

编辑视图:

<% form_for :admin, @subscription, :html => {:method => :put} do |f| %>
  <p>
    <%= f.label :ended_at %><br />
    <%= f.date_select :ended_at %>
  </p>
  <p>
    <%= f.submit 'Update' %>
  </p>
<% end %>

路线:

  map.namespace :admin do |admin|
    admin.resources :subscriptions
  end

我认为我需要在 form_for 方法或路由中做一些不同的事情,但我尝试过的一切都不起作用。

感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    应该是这样的:

    <% form_for [:admin, @subscription] do |f| %>
    

    通过将:admin@subscription 放在方括号中,这使它成为一个数组,作为第一个参数传递给form_for。这样做的好处是,如果@subscription 是一个预先存在的记录(就像find 找到的记录,不是用new 创建的),那么Rails 就会知道将form 方法设置为PUT

    【讨论】:

    • 嗯。谢谢!这适用于另一个控制器。对于这个,我这样做时会得到一个“展示”动作。不是什么大问题,因为我可以强制采取行动,但它不干净;)
    • 太棒了!避免我一些问题
    【解决方案2】:

    这行得通:

    <% form_for :admin, @subscription, :html => {:method => :put}, :url => { :action => "update" } do |f| %>
    

    虽然看起来很冗长。有更好的想法吗?

    【讨论】:

    【解决方案3】:

    试试

    - form_for :subscription, @subscription do |f|
    

    我们在这里使用了formtastic。

    【讨论】:

    • :subscription 是多余的吗?他还在为 Subscription 资源命名空间,所以他需要使用 Array 表单。
    猜你喜欢
    • 1970-01-01
    • 2012-01-30
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    相关资源
    最近更新 更多