自动填充 simple_form 个字段 - RAILS
Automatically populating simple_form fields - RAILS
假设我有一个客户和一个品牌 class(其中一个客户有很多品牌,一个品牌属于一个客户)。当用户在特定客户的展示页面上时,he/she 可以选择单击按钮以添加新品牌(该按钮重定向到表单以创建新品牌,其中包含一个字段,用户可以在其中应注明该品牌属于哪个客户)。但是,当用户进入该表单时,he/she 不必手动指示该品牌属于哪个客户,而是应该根据展示页面显示的客户的 customer_id 自动输入信息用户只是在看。如果未查看显示页面,则父 customer_id 字段应为空(默认情况下为空),用户应手动输入。
有没有办法在 Rails 中实现它?如果可以,怎么做?
在展示页面的 link 上,您可以看到这样的内容
<%= link_to 'New Brand', new_brand_path(customer_id: params[:id]) %>
然后在控制器中,您可以使用一些代码来检查 customer_id 是否存在于新操作的参数哈希中:
@brand.customer = Customer.find(params[:customer_id]) if params[:customer_id]
现在,当呈现表单时,假设使用 form_for @brand,将设置客户字段。
如果它们 link 来自另一个页面(除了显示),那么就不要在 link_to 方法中传入 customer_id: params[:id]称呼。会绕过controller中的if语句,customer为空
你的问题有点难懂,不过我们开始吧。
首先,您必须创建一个 link 新品牌,例如:
<%= link_to 'New brand for #{@customer.name}", new_brand_path(customer_id: @customer.id) %>
通过这种方式,您将 customer_id 作为参数传递。
在品牌控制器上你会做的新动作
def new
@customer = Customer.find_by_id(params[:customer_id])
@brand = @customer ? Brand.new(customer_id: @customer.id) : Brand.new
end
你看我打个例子就说清楚了。有更好的方法可以做到这一点,但我想这会指导您完成所需的操作。
@new_brand = @customer.brands.new
它用正确的值
填充 @new_brand 中的 cusomer_id
假设我有一个客户和一个品牌 class(其中一个客户有很多品牌,一个品牌属于一个客户)。当用户在特定客户的展示页面上时,he/she 可以选择单击按钮以添加新品牌(该按钮重定向到表单以创建新品牌,其中包含一个字段,用户可以在其中应注明该品牌属于哪个客户)。但是,当用户进入该表单时,he/she 不必手动指示该品牌属于哪个客户,而是应该根据展示页面显示的客户的 customer_id 自动输入信息用户只是在看。如果未查看显示页面,则父 customer_id 字段应为空(默认情况下为空),用户应手动输入。
有没有办法在 Rails 中实现它?如果可以,怎么做?
在展示页面的 link 上,您可以看到这样的内容
<%= link_to 'New Brand', new_brand_path(customer_id: params[:id]) %>
然后在控制器中,您可以使用一些代码来检查 customer_id 是否存在于新操作的参数哈希中:
@brand.customer = Customer.find(params[:customer_id]) if params[:customer_id]
现在,当呈现表单时,假设使用 form_for @brand,将设置客户字段。
如果它们 link 来自另一个页面(除了显示),那么就不要在 link_to 方法中传入 customer_id: params[:id]称呼。会绕过controller中的if语句,customer为空
你的问题有点难懂,不过我们开始吧。
首先,您必须创建一个 link 新品牌,例如:
<%= link_to 'New brand for #{@customer.name}", new_brand_path(customer_id: @customer.id) %>
通过这种方式,您将 customer_id 作为参数传递。
在品牌控制器上你会做的新动作
def new
@customer = Customer.find_by_id(params[:customer_id])
@brand = @customer ? Brand.new(customer_id: @customer.id) : Brand.new
end
你看我打个例子就说清楚了。有更好的方法可以做到这一点,但我想这会指导您完成所需的操作。
@new_brand = @customer.brands.new
它用正确的值
填充 @new_brand 中的 cusomer_id