2016-03-22 2 views
0

Невероятно новый для рельсов и не может показаться, что это простое действие разрушения работает. Все, что он делает, перенаправляется на страницу индекса mod mod и не уничтожает запись. Нужно ли мне звонить .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 

конфигурации/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 %> 

ответ

1

Вам нужно получить запись из базы данных, то вы можете позвонить уничтожить на объект, вы можете сделать это

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 

Надежда, что помогает!

+0

Да. Быстрый вопрос, могу ли я просто вызвать '.destroy' в link_to (или что-то подобное). устраняя необходимость в методе уничтожения в контроллере? – Rob

+1

Нет, удаление записи - это действие, поэтому вам нужно определить «действие» в контроллере. – RSB

+0

ОК, thankyou :) – Rob

0

Вы должны уничтожить объект до:

def destroy 
@destroyed_object.destroy # or Model.destroy(params[:id]) 
redirect_to guide_mod_panel_mod_approval_index_path(@guide) 
end 
Смежные вопросы