这是我的设置:Rails 3.2.13
我已经为new传递了一个参数“restaurant_id”,现在我尝试通过create的提交按钮传递相同的参数。但是,它似乎没有识别create的参数。
换新:
<%= link_to t('.new', :default => t("helpers.links.new")),
new_reservation_path(:restaurant_id => restaurant.id),
:class => 'btn btn-primary' %>
这在restaurant.id中正确传递给控制器中的new。然后,在新视图中,我有一个提交按钮:
对于创建:
<%= link_to t('.cancel', :default => t("helpers.links.cancel")),
reservations_path(:restaurant_id => @restaurant.id), :class => 'btn' %>
我想要做的是在创建和保存对象时再次传入restaurant.id.但是,它不会出现在create方法中。 @ restaurant.id有效地自行生成正确的id,但不会通过。
这是我的控制器:
class ReservationsController < ApplicationController
def new
@reservation = Restaurant.find(params[:restaurant_id]).reservations.new
@restaurant = Restaurant.find(params[:restaurant_id])
end
def create
@reservation = Restaurant.find(params[:restaurant_id]).reservations.new(params[:reservation])
if @reservation.save
redirect_to root_url, notice: 'Reservation was successfully created.'
else
render action: "new", notice: 'There was an error.'
end
end
end
当它试图找到餐馆时,我收到No ID错误:
ActiveRecord::RecordNotFound in ReservationsController#create
Couldn't find Restaurant without an ID
当我在控制器中测试:restaurant_id时,它返回空白。
这很奇怪,因为我使用完全相同的方法传递:restaurant_id到我的新控制器,但是当它传递给我的创建控制器时它不起作用。
答案 0 :(得分:0)
我没有看到该提交按钮的代码,但由于该提交按钮发送了一个表单,您需要将该参数作为隐藏字段(hidden_field或hidden_field_tag)传递。 HTML表单?
中路径中的action
根本无法通过。