2013-07-16 2 views
0

У меня есть проблема с простым удалением.рельсы пытаются уничтожить из не существующей таблицы

У меня есть мнение


%p 
    Name: 
    = @element.name 
%p 
    Description: 
    = @element.description 
%p 
    = link_to 'edit', edit_element_path(@element) 
    | 
    = link_to 'delete', @element, :confirm => 'Are you shure?', :method => :delete 

Когда я пытаюсь нажать на что удалить в браузере и Clik OK он говорит, что он не может удалить из unexisting таблицы elements_muscle_groups, почему он пытается удалить из этого unexisting таблицы так или иначе?

Кстати, я использую Rails 4

Вы можете увидеть код контроллера на скриншоте.

Извините за помощь и помощь.

enter image description here

EDIT: Привет У меня есть еще одна вещь, чтобы добавить,

Элемент has_and_belongs_to_many :muscle_groups

MuscleGroup has_and_belongs_to_many :elements

поэтому, возможно, следует удалить из elements_muscle_groups, но почему эта таблица не существует тогда?

+1

вам нужно выполнить миграцию для создания вкладки соединения le также – Debadatt

ответ

0

из рельсов апи:

http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many

has_and_belnogs_to_many: Определяет многие-ко-многим с другим классом. Это связывает два класса через промежуточную таблицу соединений. Если таблица соединений явно не указана в качестве опции, ее предполагается использовать с лексическим порядком имен классов. Таким образом, соединение между Developer и Project даст имя таблицы объединения по умолчанию для «developers_projects», потому что «D» превосходит «P».

так что вам нужно, чтобы убедиться, что у вас есть таблица под названием

elements_muscle_groups с element_id: integer и muscle_group_id:integer

+0

Да, я видел, что некоторое время назад спасибо :) – Azaryan

+0

Решено ли это решить проблему? – Substantial

+0

похоже, что у вас такая же проблема, и вы не можете ее решить? – rmagnum2002

0

Я не использовал Rails 4 много, но я думаю, что вы пытаетесь достичь это неправильно: ваши разрушающие методы должны выглядеть следующим образом: -

def destroy 
@element = Element.find(params[:id]) 
if @element.destroy 
    flash[:message] = "Record destroy successfully." 
    redirect_to elements_path 
else 
    flash[:error] = "Record destroy successfully." 
    render element_path(@element) 
end 
end 

Вы можете изменить метод соответственно. Надеюсь, это поможет.

+0

Я пробовал это, но он не работает – Azaryan

+0

Чем больше проблем с маршрутами, тем лучше. вы не можете правильно определить маршруты. –

+0

Маршруты работают отлично, его единственный элемент ресурсов – Azaryan

0

файл миграции будет выглядеть так,

class CreateElementsMuscleGroups < ActiveRecord::Migration 
    def change 
    create_table :elements_muscle_groups do |t| 
     t.integer :element_id 
     t.integer :muscle_group_id 
     t.timestamps 
    end 
    end 
end 

Запустить миграционную .. Это решит проблему.