我正在使用Rails 4.1.6
我试图创造能力,选择至少3个服务,然后保存与广告。
模型结构如下:
class Service < ActiveRecord::Base
belongs_to :advertisement
end
class Advertisement < ActiveRecord::Base
has_many :services
end 我的表格:
<% @services.each do |service| %>
<li>
<%= check_box_tag 'service_ids[]', service.id -%>
<%= h service.name -%>
</li>
<% end %>主计长:
class AdvertisementsController < ApplicationController
before_action :authenticate_user!
before_action :set_advertisement, only: [:show, :edit, :update, :destroy]
respond_to :html, :xml, :json
def index
@advertisements = Advertisement.all
respond_with(@advertisements)
end
def show
@advertisement = Advertisement.find(params[:id])
respond_with(@advertisement)
end
def new
@advertisement = Advertisement.new
@services = Service.all
respond_with(@advertisement)
end
def edit
end
def create
@advertisement = Advertisement.new(advertisement_params)
if @advertisement.save
if params[:images]
params[:images].each { |image|
@advertisement.pictures.create(image: image)
}
respond_with(@advertisement)
end
else
format.html { render 'new'} ## Specify the format in which you are rendering "new" page
format.json { render json: @advertisement.errors } ## You might want to specify a json format as well
end
end
def update
@advertisement.update(advertisement_params)
respond_with(@advertisement)
end
def destroy
@advertisement.destroy
respond_with(@advertisement)
end
private
def set_advertisement
@advertisement = Advertisement.find(params[:id])
end
def advertisement_params
params.require(:advertisement).permit(:name, :user_id, :advertisement_id, :image,:terms_of_service,:region, :age, :height, :phone_number,:description)
end
end当我检查多桩服务并单击“保存”时,没有错误。当我检查日志文件时,我收到了这条消息“
Parameters: ... "service_ids"=>["1", "2", "3"] ...但是在控制台我检查:
2.1.3 :008 >t = Advertisement.last (ALL OK)
....
2.1.3 :008 > t.services
=> #<ActiveRecord::Associations::CollectionProxy []> 这就是错误。联想方面的问题,但在我看来,每件事都没问题。
有什么问题吗?谢谢
发布于 2014-11-27 19:35:28
在service_ids中没有advertisement_params。加上:
@advertisement = Advertisement.new(advertisement_params.merge(service_ids: params[:service_ids]))
# or
@advertisement = Advertisement.new(advertisement_params)
@advertisement.service_ids = service_idshttps://stackoverflow.com/questions/26974680
复制相似问题