Ruby on Rails - 来自另一个控制器的密码
Ruby on Rails - Pass ID from another controller
我有两个模型。首先是 Taxirecord,其次是 Carpark。每个 Taxirecord 可能有自己的停车场。我在将 taxirecord_id 传递给 Carpark 记录时遇到问题。我有路线
car_new GET /taxidetail/:taxirecord_id/carpark/new(.:format) carparks#new
我想将 :taxirecord_id 传递给我的创建控制器,这是我正在编辑的 taxirecord 的 ID。
我的停车场模型:
class Carpark < ActiveRecord::Base
belongs_to :taxirecord
end
在控制器中,我通过基于参数的查找函数查找 taxirecord_id:taxirecord_id,但调用创建时 id 为 nil。你能帮我找出我做错了什么吗?我该如何解决这个问题?感谢您的帮助!
我的停车场控制器
class CarparksController < ApplicationController
def new
@car = Carpark.new
end
def create
@car = Carpark.new(carpark_params, taxirecord_id: Taxirecord.find(params[:taxirecord_id]))
if @car.save
flash[:notice] = "Zaznam byl ulozen"
redirect_to root_path
else
flash[:notice] = "Zaznam nebyl ulozen"
render 'new'
end
end
private def carpark_params
params.require(:carpark).permit(:car_brand, :car_type, :driver_name, :driver_tel)
end
end
我倾向于使用类似的东西:
before_action :assign_taxirecord
...
private
def assign_taxirecord
@taxirecord = TaxiRecord.find(params[:taxirecord_id])
end
然后在创建动作中:
def create
@car = @taxirecord.build_carpark(carpark_params)
...
end
显然需要根据您的要求进行一些调整(即调用 before_action
的操作),但希望对您有所帮助!
无需发送出租车记录 ID。
class Carpark < ApplicationRecord
belongs_to :taxirecord
end
class Taxirecord < ApplicationRecord
has_one :carpark
end
Rails.application.routes.draw do
resources :taxirecords do
resources :carparks
end
end
for new taxirecord
t = Taxirecord.new(:registration => "efgh", :description =>"test")
for new carpark
t.create_carpark(:description=>"abcd")
#=> #<Carpark id: 2, taxirecord_id: 2, description: "abcd", created_at: "2017-10-12 10:55:38", updated_at: "2017-10-12 10:55:38">
我终于搞定了
我添加了 <%=link_to 'New Carpark', {:controller => "carparks", :action => "new", :taxirecord_id => @taxi_record.id }%>
我的出租车记录表和停车场表 <%= hidden_field_tag :taxirecord_id, params[:taxirecord_id] %>
还有我的停车场管理员:@carpark.taxirecord_id = params[:taxirecord_id]
感谢大家的大力支持和帮助!
我有两个模型。首先是 Taxirecord,其次是 Carpark。每个 Taxirecord 可能有自己的停车场。我在将 taxirecord_id 传递给 Carpark 记录时遇到问题。我有路线
car_new GET /taxidetail/:taxirecord_id/carpark/new(.:format) carparks#new
我想将 :taxirecord_id 传递给我的创建控制器,这是我正在编辑的 taxirecord 的 ID。 我的停车场模型:
class Carpark < ActiveRecord::Base
belongs_to :taxirecord
end
在控制器中,我通过基于参数的查找函数查找 taxirecord_id:taxirecord_id,但调用创建时 id 为 nil。你能帮我找出我做错了什么吗?我该如何解决这个问题?感谢您的帮助!
我的停车场控制器
class CarparksController < ApplicationController
def new
@car = Carpark.new
end
def create
@car = Carpark.new(carpark_params, taxirecord_id: Taxirecord.find(params[:taxirecord_id]))
if @car.save
flash[:notice] = "Zaznam byl ulozen"
redirect_to root_path
else
flash[:notice] = "Zaznam nebyl ulozen"
render 'new'
end
end
private def carpark_params
params.require(:carpark).permit(:car_brand, :car_type, :driver_name, :driver_tel)
end
end
我倾向于使用类似的东西:
before_action :assign_taxirecord
...
private
def assign_taxirecord
@taxirecord = TaxiRecord.find(params[:taxirecord_id])
end
然后在创建动作中:
def create
@car = @taxirecord.build_carpark(carpark_params)
...
end
显然需要根据您的要求进行一些调整(即调用 before_action
的操作),但希望对您有所帮助!
无需发送出租车记录 ID。
class Carpark < ApplicationRecord
belongs_to :taxirecord
end
class Taxirecord < ApplicationRecord
has_one :carpark
end
Rails.application.routes.draw do
resources :taxirecords do
resources :carparks
end
end
for new taxirecord
t = Taxirecord.new(:registration => "efgh", :description =>"test")
for new carpark
t.create_carpark(:description=>"abcd")
#=> #<Carpark id: 2, taxirecord_id: 2, description: "abcd", created_at: "2017-10-12 10:55:38", updated_at: "2017-10-12 10:55:38">
我终于搞定了
我添加了 <%=link_to 'New Carpark', {:controller => "carparks", :action => "new", :taxirecord_id => @taxi_record.id }%>
我的出租车记录表和停车场表 <%= hidden_field_tag :taxirecord_id, params[:taxirecord_id] %>
还有我的停车场管理员:@carpark.taxirecord_id = params[:taxirecord_id]
感谢大家的大力支持和帮助!