Alrighty。
所以我相信我的问题很简单,但出于某种原因,我似乎无法弄明白。
我希望用户能够申请旅游预订。然后获取user_id和它正在请求巡视的tour_id。我成功地获得了user_id,但不知道如何获取tour_id。
以下是我的控制器的外观:
class TourRequestsController < ApplicationController
def create
@tour_request = current_user.tour_requests.new(tour_request_params)
if @tour_request.save
flash[:success] = "You've requested a tour booking"
redirect_to :back
else
flash[:error] = 'Unable to request a tour'
redirect_to :back
end
end
private
def tour_request_params
params.require(:tour_request).permit(:tour_id, :user_id, :date)
end
end
你可以看到user_id是通过current_user获得的。我试过添加这样的合并:
tour_request_params(tour_id => Tour.id / @tour.id / tour_path(tour.id)
等,但它不起作用。我知道我可以添加一个隐藏的html字段,但是我希望尽可能安全,因此你不能篡改数据。
关联是游览属于用户,用户有很多游览。
您可以申请参观游览/显示表格如下:
<%= form_for TourRequest.new do |f| %>
<%= f.text_field :date, id: 'datetimepicker', autocomplete: 'off', placeholder: 'dd.mm.yyyy' %>
<%= f.submit 'Request a tour', class: 'btn btn-primary' %>
<% end %>
我如何做到这一点,以便在我提交旅游预订请求时获得旅游ID?
答案 0 :(得分:0)
您有2个选项之一:
无论哪种情况,您都需要在某个时刻从客户端将游览ID传递给服务器。
答案 1 :(得分:0)
我认为id应该可用,即在保存之后非零。
def create
@tour_request = current_user.tour_requests.new(tour_request_params)
puts "id = #{@tour_request.id}" # should be nil
if @tour_request.save
puts "id = #{@tour_request.id}" # should be non-nil
flash[:success] = "You've requested a tour booking"
redirect_to :back
else
flash[:error] = 'Unable to request a tour'
redirect_to :back
end
end