兩個參考ID中只有一個被設置在我的一個表中。Rails - 如何一次記錄兩個參考ID
模式
模式
tech.rb
class Tech < ActiveRecord::Base
has_many :services
end
service_menu
class ServiceMenu < ActiveRecord::Base
has_many :services
end
service.rb
class Service < ActiveRecord::Base
belongs_to :tech
belongs_to :service_menu
end
控制器
services_controller.rb
def new
@service = current_tech.services.build
end
def create
@service = current_tech.services.build(service_params)
respond_to do |format|
if @service.save
format.html { redirect_to @service, notice: 'Service was successfully created.' }
format.json { render :show, status: :created, location: @service }
else
format.html { render :new }
format.json { render json: @service.errors, status: :unprocessable_entity }
end
end
end
private
def service_params
params.require(:service).permit(:name)
end
查看
<%= simple_form_for @service do |f| %>
<div class="field">
<%= f.label "Select service category" %>
<br>
<%= collection_select(:service, :name, ServiceMenu.all, :name, :name, {:prompt => true }) %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
每當我創建一個新的服務,只有tech_id記錄,但不是service_menu_id。 如何創建一項新的服務,將服務表同時記錄tech和service_menu ID?
任何幫助表示讚賞。
編輯7/3 2:55 PM EST
@顏菊方法起初並不爲我工作,但現在它。起初,我沒有正確引用services table
中的service_menu_id
。前
我services
分貝:
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| tech_id | int(11) | YES | MUL | NULL | |
| service_menu_id | int(11) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
原因之前,不工作是有是KEY
欄下沒有MUL
值。
我services
現在DB:
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| tech_id | int(11) | YES | MUL | NULL | |
| service_menu_id | int(11) | YES | MUL | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+
這也讓我在services
分貝刪除name
列,因爲它不再需要。
感謝所有回覆。
你的方法記錄了service_menu_id到表中,但現在我的':name'列條目產生'null'。請指教。謝謝。 –
您需要設置**名稱**的服務?然後只需添加** <%= f。text_field:name%> **在你的表單中。 ** collection_select **用於設置service_menu。 –
經過進一步審查,您的方法奏效。請在我的帖子末尾看到我的編輯。非常感謝! :) –