- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道这是否是 oracle_enhanced 适配器的问题。我有:
class Room < ActiveRecord::Base
has_and_belongs_to_many :manuals
end
class Manual < ActiveRecord::Base
has_and_belongs_to_many :rooms
end
class CreateJoinTableManualRoom < ActiveRecord::Migration
def change
create_join_table :manuals, :rooms do |t|
t.index [:manual_id, :room_id]
t.index [:room_id, :manual_id]
end
end
end
当我创建新手册时,它不会更新我的 manuals_rooms 连接表。
class ManualsController < ApplicationController
before_action :set_manual, only: [:show, :edit, :update, :destroy]
def index
@manuals = Manual.all
@rooms = Room.all
end
def show
end
def new
@manual = Manual.new
end
def edit
end
def create
@manual = Manual.new(manual_params)
respond_to do |format|
if @manual.save
format.html { redirect_to @manual, notice: 'Manual was successfully created.' }
format.json { render action: 'show', status: :created, location: @manual }
else
format.html { render action: 'new' }
format.json { render json: @manual.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if @manual.update(manual_params)
format.html { redirect_to @manual, notice: 'Manual was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @manual.errors, status: :unprocessable_entity }
end
end
end
private
def set_manual
@manual = Manual.find(params[:id])
end
def manual_params
params.require(:manual).permit(:name, :document, :room_ids => [])
end
end
日志
Started POST "/manuals" for 127.0.0.1 at 2014-08-20 09:12:12 -0400
Processing by ManualsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Ntqqh1vU9zrGZuw3K8xNef440ktAixWj+6Cx20wrCRg=", "manual"=>{"document"=>#<ActionDispatch::Http::UploadedFile:0x000001134643d0 @tempfile=#<Tempfile:/var/folders/d1/x0nbfyrj30bd_p33ds0f12_c0000gq/T/RackMultipart20140820-59361-1jkeynu>, @original_filename="103.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"manual[document]\"; filename=\"103.jpg\"\r\nContent-Type: image/jpeg\r\n">, "room_id"=>"3"}, "commit"=>"Upload"}
Unpermitted parameters: room_id
SQL (1.8ms) INSERT INTO "MANUALS" ("CREATED_AT", "DOCUMENT", "ID", "UPDATED_AT") VALUES (:a1, :a2, :a3, :a4) [["created_at", Wed, 20 Aug 2014 09:12:12 EDT -04:00], ["document", "103.jpg"], ["id", 10021], ["updated_at", Wed, 20 Aug 2014 09:12:12 EDT -04:00]]
Redirected to http://localhost:3000/manuals/10021
Completed 302 Found in 16ms (ActiveRecord: 1.8ms)
我将 room_ids => []
更改为 room_id
现在我得到:
SQL (2.5ms) INSERT INTO "MANUALS" ("CREATED_AT", "DOCUMENT", "ID", "ROOM_ID", "UPDATED_AT") VALUES (:a1, :a2, :a3, :a4, :a5) [["created_at", Wed, 20 Aug 2014 09:20:43 EDT -04:00], ["document", "AMH_BW.jpg"], ["id", 10022], ["room_id", 3], ["updated_at", Wed, 20 Aug 2014 09:20:43 EDT -04:00]]
Redirected to http://localhost:3000/manuals/10022
Completed 302 Found in 56ms (ActiveRecord: 19.0ms)
手册/_form.html.erb
<%= form_for(@manual) do |f| %>
<div class="field">
<%= f.label :document %><br>
<%= f.file_field :document %>
</div>
<div class="field">
<%#= collection_select(:manual, :room_ids, Room.all, :id, :name) %>
<%= f.grouped_collection_select :room_id, Building.order(:name), :rooms, :name, :id, :name_with_number, include_blank: true %>
</div>
<div class="actions">
<%= f.submit "Upload" %>
</div>
<% end %>
最佳答案
我在这里看到了几个问题。让我一一强调:
multiple: true
选项Room
和 Manual
具有 HABTM 关联,即 M-M 关系。
正如 @MaxWilliams 在他的回答中指出的那样,Rails 期望 params
散列中有一个 room_ids
数组,而不是单个值。
要做到这一点,您应该允许用户在表单中选择多个房间
(记住,它的M-M 关系)通过添加 multiple: true
作为 form
中 grouped_collection_select
方法的 html
选项。而且,第一个参数应该是 room_ids
而不是 room_id
。
<%= f.grouped_collection_select :room_ids, Building.order(:name), :rooms, :name, :id, :name_with_number, {include_blank: true}, {multiple: true} %>
room_ids
作为数组room_ids
由于上面的 Change #1 现在将作为数组传递到 params
哈希中,因此应该允许它作为数组
。
def manual_params
params.require(:manual).permit(:name, :document, :room_ids => [])
end
manuals
表中删除 room_id
根据问题中的共享日志
SQL (2.5ms) INSERT INTO "MANUALS" ("CREATED_AT", "DOCUMENT", "ID", "ROOM_ID", "UPDATED_AT") VALUES (:a1, :a2, :a3, :a4, :a5) [["created_at", Wed, 20 Aug 2014 09:20:43 EDT -04:00], ["document", "AMH_BW.jpg"], ["id", 10022], ["room_id", 3], ["updated_at", Wed, 20 Aug 2014 09:20:43 EDT -04:00]]
我看到您已将 room_id
字段添加到 manuals
表中。现在这是一个不!不!
1-M 关联或 1-1 关联 Manual
和 Room
但它们之间有一个M-M 关联,连接表 manuals_rooms
已经包含 room_id
和 manual_id
字段。
最重要的是,您需要从 manuals
表中删除 room_id
。
生成用于删除 room_id
的迁移:
rails generate migration RemoveRoomIdFromManuals room_id:integer
运行 rake db:migrate
以迁移更改。
这应该可以解决您的问题。让我知道。
I'm really starting to think that this may be an oracle thing
不! oracle_enhanced 适配器
没有任何问题。是您的代码导致了问题。
关于ruby-on-rails - oracle_enhanced 适配器上的 has_and_belongs_to_many,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25405516/
我需要查找两个模型之间的记录。 class Report has_and_belongs_to_many :groups end class Group has_and_belongs_to_
我正在尝试在我的 Rails 应用程序中设置 Employee 模型和 NetworkDrive 模型之间的 has_and_belongs_to_many 关系。 在 employee.rb 中我指
我在用户和项目之间建立了多对多关系,而且它工作得很好。但是我想在 mongoid 中模拟这种情况: db.projects.insert( { "name" : "Test project
我有两个实体、数据中心和项目之间的多对多链接表,在遗留代码中。我发现,这实际上是一对多的关系。 作为清理关系的第一步,我想放一个唯一索引在其中一个字段上。 现在我收到以下错误: has_and_bel
我有一组非常简单的 HABTM 模型 class Tag tag) end end end 现在一切正常,除了标签表中出现大量重复项。 我需要做什么才能避免标签表中出现重复(基于名
我试图弄清楚 rails 是如何决定命名一个表的。我不得不反复试验才能弄清楚。 该表最终被命名为 menu_categories_items .我想知道它是如何做到的。 楷模 # == Schema
我对 HABTM 与 Rails 3.2.11 的关联有点困惑。 我有一个图像模型: class Image false do |t| t.references :image
我有研讨会表和类别表。 车间模型: has_many :workshop_categories, dependent: :destroy has_many :categories, throu
我有两个模型,Conversation 和 Phones,它们彼此有_and_belongs_to_many 个。电话可以有很多对话,对话可以有很多电话(两个或更多)。 class Conversat
修复者:更改模型名称以匹配 Rails 命名约定 当我尝试将技能加入用户时出现以下错误: irb(main):006:0> user.skills ' from script/rai
我试图让 mongoid 保存关联,但我只能让一侧工作。如果我有以下测试。 test "should add a user as a follower when a user follows th
我的 Ruby On Rails 项目中的 has_and_belongs_to_many 关联有问题。 这是我的模型: class Store false, :force => true do |
c = Course.create name:"Math1", ?? 我试图弄清楚如何将这门类(class)与 has_and_belongs_to_many 的现有学生联系起来。下面是我的关联模式。
预订 has_and_belongs_to_many学生们 学生 has_and_belongs_to_many图书 在 BooksStudents 模型中,我想在商店中添加“状态”字段,如果它是租用
嗨,我在模型中使用 has_and_belongs_to_many。 我想为种类设置存在的 valitor。 并将每个核心的最大种类数设置为 3 class Core 'core_id', :ass
一般混淆 我有可以有 3 种类型的乐队。我读了 previous SO post处理这个问题的正确方法是几个步骤: 1) 带内.rb has_and_belongs_to_many :genres 2
我有 field 和照片的模型: class Venue 这是我的 Edit 和 Update 方法的
我不知道这是否是 oracle_enhanced 适配器的问题。我有: class Room []) end end 日志 Started POST "/manuals" for 127.0
我正在尝试在 Ruby on Rails 项目中执行以下操作: class FoodItem :food_categories end class FoodCategory :food_categ
我有一个模型 UseCases(大约 6.000 行)和 EducationalObjectives(大约 4.000 行)与 has_and_belongs_to_many(EducationalO
我是一名优秀的程序员,十分优秀!