Ruby on rails 将id从一个控制器传递到另一个控制器-RAILS 5
如何在输入字段中自动放置/传递产品标识 我有两个表产品和CapturePage在我的 模式Ruby on rails 将id从一个控制器传递到另一个控制器-RAILS 5,ruby-on-rails,Ruby On Rails,如何在输入字段中自动放置/传递产品标识 我有两个表产品和CapturePage在我的 模式 products t.string "name" t.string "description" capturepages t.string "name" t.string "email" t.integer "product_id" 型号 product.rb has_many :capturepages capturepage.rb belongs_to :product c
products
t.string "name"
t.string "description"
capturepages
t.string "name"
t.string "email"
t.integer "product_id"
型号
product.rb
has_many :capturepages
capturepage.rb
belongs_to :product
capturepages控制器
class CapturepagesController < ApplicationController
before_action :set_capturepage, only: [:show, :edit, :update, :destroy]
def new
@capturepage = Capturepage.new
@product_id = params[:product_id]
@product = Product.find(params[:product_id])
end
def create
@capturepage = Capturepage.new(capturepage_params)
@product = @capturepage.product
respond_to do |format|
if @capturepage.save
format.html { redirect_to @product.affiliatecompanylink, notice: 'Capturepage was successfully created.' }
format.json { render :show, status: :created, location: @capturepage }
else
format.html { render :new }
format.json { render json: @capturepage.errors, status: :unprocessable_entity }
end
end
end
private
def set_capturepage
@capturepage = Capturepage.find(params[:id])
end
def capturepage_params
params.require(:capturepage).permit(:name, :email, :product_id)
end
end
class CapturepagesController
视图/products.show.html.erb
<%= simple_form_for(@capturepage) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :product_id, value: @product_id %>
<%= f.input :name, placeholder: "Your Name", label: false %>
<%= f.input :email, placeholder: "Your Email", label: false %>
</div>
<div class="form-actions">
<%= f.button :submit, "get product" %>
</div>
<% end %>
当用户单击以下链接时:
<%= link_to "buy now", new_capturepage_path(product_id: @product.id), target:"_blank" %>
它们被引导到capturepage表单页面
查看/capturepages/_form.html.erb
<%= simple_form_for(@capturepage) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :product_id, value: @product_id %>
<%= f.input :name, placeholder: "Your Name", label: false %>
<%= f.input :email, placeholder: "Your Email", label: false %>
</div>
<div class="form-actions">
<%= f.button :submit, "get product" %>
</div>
<% end %>
url声明:http://localhost:3000/capturepages/new?product_id=1
捕获产品标识,但产品标识输入为空:
在使用时,应将值
放在input\u html
中。下面的代码应该可以解决您的问题
<%= f.input :product_id, input_html: { value: @product_id } %>