简体   繁体   English

Ruby on Rails-通过另一个控制器传递ID

[英]Ruby on Rails - Pass ID from another controller

I have two models. 我有两个模型。 First is Taxirecord and second is Carpark. 首先是Taxirecord,其次是停车场。 Each Taxirecord may have its own Carpark. 每个出租车记录可能都有自己的停车场。 I have a problem with passing taxirecord_id to Carpark record. 我在将taxirecord_id传递到停车场记录时遇到问题。 I have route 我有路线

car_new GET    /taxidetail/:taxirecord_id/carpark/new(.:format) carparks#new

And i want to pass :taxirecord_id, which is id of taxirecord that im editing, to my create controller. 我想将:taxirecord_id传递给我的创建控制器,它是我正在编辑的出租车记录的ID。 My carpark model: 我的停车场型号:

class Carpark < ActiveRecord::Base
    belongs_to :taxirecord
end

In controller im finding taxirecord_id by find function based on param :taxirecord_id, but id is nil when create is called. 在控制器中,im通过基于param:taxirecord_id的查找功能查找taxirecord_id,但在调用create时,id为nil。 Can you please help me to find out what Im doing wrong and how Can I solve this problem? 您能帮我找出我做错了什么以及如何解决此问题? Thanks for any help! 谢谢你的帮助!

My carpark controller 我的停车场控制器

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

I'd lean towards using something like: 我倾向于使用类似:

before_action :assign_taxirecord   

...

private

def assign_taxirecord
  @taxirecord = TaxiRecord.find(params[:taxirecord_id])
end

And then in the create action: 然后在create动作中:

def create
  @car = @taxirecord.build_carpark(carpark_params)
  ...
end 

Obviously there's a little tailoring needed to your requirements (ie for what actions the before_action is called), but I hope that helps! 显然,需要针对您的需求进行一些调整(例如,针对before_action调用了哪些操作),但是我希望对您before_action帮助!

No need to send taxirecord 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 }%>在我的出租车记录表格中添加了<%=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]感谢大家的大力支持和帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Ruby on Rails 4-将答案从一个控制器传递到另一个控制器 - Ruby on Rails 4 - Pass answer from one controller to another controller 如何从控制器Ruby On Rails中传递表中的用户ID - How to pass user id in table from controller Ruby On Rails 如何将ID传递给控制器​​中的动作-Ruby on Rails - How to pass id to an action in the controller - Ruby on Rails Rails link_to将:id从show传递到另一个控制器动作 - Rails link_to pass :id from show to another controller action Ruby on Rails:如何通过表单将实例变量从控制器传递到另一个控制器 - Ruby on Rails: how to pass an instance variable from a controller to another controller via a form 将值从视图传递到导轨上的控制器红宝石 - pass values from the view to the controller ruby on rails 如何在Ruby on Rails中从控制器传递用户ID和类型表以实现多态关联 - How to pass user id and type in table from controller for polymorphic assosiation in Ruby on Rails Ruby on Rails-从另一个控制器渲染部分 - Ruby on Rails - Render partial from another controller 从Ruby on Rails 3中的另一个控制器渲染表单 - Rendering a form from another controller in Ruby on Rails 3 在rails上的create controller ruby​​中传递新对象ID - Pass new object id within create controller ruby on rails
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM