【问题标题】:Can't get destroy to work in rails不能破坏在铁轨上工作
【发布时间】:2016-03-22 09:12:10
【问题描述】:

对 Rails 还很陌生,似乎无法让这个简单的破坏动作发挥作用。它所做的只是重定向到模组面板索引页面并且不会破坏记录。我需要在destroy方法中调用.destroy吗?还是我缺少什么?

mod_approval 控制器

def index
    @guide          = Guide.friendly.find(params[:guide_id])
    @check_category = CheckCategory.where(guide_id: @guide.id).all
    @category       = Guide.friendly.find(@guide.id).categories.new
end

def destroy
    redirect_to guide_mod_panel_mod_approval_index_path(@guide)
end

config/routes.rb

match '/guides/:guide_id/mod-panel/approve/reject' => 'mod_approval#destroy', :via => :delete, as: :guide_mod_panel_approve_destroy

index.html.erb

 <% @check_category.each do |category| %>
    <%= link_to "Reject", guide_mod_panel_approve_destroy_path(@guide, category), method: :delete, data: {confirm: "You sure?"} %><br>
 <% end %>

【问题讨论】:

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


    【解决方案1】:

    你需要从数据库中获取记录,然后你可以在对象上调用destroy,你可以这样做

    def destroy
      guide = Guide.find(params[:guide_id])
      category = guide.categories.find(params[:id])
      category.destroy
      redirect_to guide_mod_panel_mod_approval_index_path(guide) 
    end
    

    希望有帮助!

    【讨论】:

    • 是的。快速提问,我可以在 link_to 中调用.destroy(或类似的东西)。不需要控制器中的destroy方法?
    • 不,删除记录是一个动作,所以你需要在控制器中定义一个action
    • 我说得太早了哈哈。我收到错误 Couldn't find CheckCategory with 'id'= 我认为参数 id 没有通过。
    • 通过运行rake routes检查网址与guide_mod_panel_mod_approval_index
    • 现在工作正常我在删除路线中添加了:id。出于好奇,您知道我是否可以获取 Link_to 中传递的 category 参数?
    【解决方案2】:

    你应该先销毁对象:

    def destroy
     @destroyed_object.destroy # or Model.destroy(params[:id])
     redirect_to guide_mod_panel_mod_approval_index_path(@guide)
    end
    

    【讨论】:

      猜你喜欢
      • 2014-02-24
      • 2018-02-09
      • 1970-01-01
      • 2016-01-07
      • 2014-10-27
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多