【问题标题】:Wrong controller action in rails form with link带有链接的导轨形式的错误控制器操作
【发布时间】:2014-11-04 10:55:11
【问题描述】:

我有一个表格...

= simple_form_for @form, :url => update_path, :method => :put do |form| 
    = form.input_field :name
    = link_to image_tag asset_path("icon.png"), 
      {:controller => 'controller/name', :action => 'delete', :id => some.id}
    = form.submit

在上面的表格中,我有一个链接/图像/图标,单击时应该触发删除动作控制器,但由于某种原因,它会转到索引控制器动作。有人可以指出这里有什么问题吗?

【问题讨论】:

  • 请添加控制器名称而不是delete_path
  • 对不起,是的,我实际上有一个控制器名称 - 更新了问题
  • 请添加 :method => 'delete' like {:controller => 'controller/name', :action => 'delete', :id => some.id, :method => "删除"}它会工作

标签: ruby-on-rails html ruby-on-rails-4 haml


【解决方案1】:

当您定义资源路由时,删除操作将被定义为与 update 操作相同的 url(使用 PUTPATCH HTTP 动词), 但使用 DELETE HTTP 动词

访问它

您需要做的就是将链接设置为对象的更新路径,并改用 DELETE 动词:

= link_to image_tag("icon.png"), update_path(id: some.id), method: :delete

另外,我认为不需要#asset_path

【讨论】:

    【解决方案2】:

    尝试做:

    = link_to image_tag asset_path("icon.png"), 
              {:controller => 'controller_name', :action => 'delete_method_name', :id => some.id}, 
              {:confirm => 'Are you sure?', :method => :delete}
    

    问题是,您需要将:method 作为:delete 传递,:action 应该是您的控制器的方法名称而不是 HTTP 方法。

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多