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

当我尝试在浏览器中单击该删除并单击确定时,它说它无法从不存在的表 elements_muscle_groups 中删除,为什么他仍然尝试从该不存在的表中删除?

顺便说一句,我正在使用 Rails 4

您可以在屏幕截图上看到控制器代码。

很抱歉 eng 和 ty 寻求帮助。

在此处输入图像描述

编辑:嗨,我还有一件事要补充,

元素 has_and_belongs_to_many :muscle_groups

肌肉群 has_and_belongs_to_many :elements

所以也许它应该从 elements_muscle_groups 中删除,但是为什么那个表不存在呢?

4

3 回答 3

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

运行此迁移..这将解决问题..

于 2013-07-16T07:03:11.350 回答
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

您可以相应地更改方法。希望它会有所帮助。

于 2013-07-16T06:43:13.433 回答
0

来自rails api:

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_groupselement_id: integer和_muscle_group_id:integer

于 2013-07-16T06:57:57.237 回答