首页 > 解决方案 > 渲染新表单时在简单表单的 url 中丢失参数

问题描述

我在我的 ruby​​ in rails 应用程序中创建了一个 simple_form。它工作正常,除非表单中出现错误并且重新加载表单,此时我丢失了 url 中的参数。

(我已经读过Keep params after render Ruby on RailsRails 3 Render => New with Parameter

这是控制器代码:

def new
  @parts = Part.where(id: params[:part_id])
  @part = params[:part_id]
  @traveller = Traveller.new
end

def create
  if @traveller.save
    redirect_to edit_part_path(:id => @traveller.part_id)
    flash[:notice] = t('alert.create')
  else
    @part = [:traveller][:part_id]
    @parts = Part.where(id: params[:part_id])
    render :action => "new", :part_id => @part
  end
end

这是查看代码

<%= simple_form_for @traveller, html: { class: "sigPad"} do |f| %>
  <%= f.input :name %>
  <%= f.input :surname %>
  <%= f.input :part_id , label: 'part',readonly: true, input_html: {id: 'part_id', value: params[:part_id] }%>
<% end %>

我检查 part_id 是否已提交,是否已提交。

我的问题是如何在重新加载页面时将 part_id 保留在 params 中。笔记

标签: ruby-on-railsparameterssimple-form

解决方案


我通过控制器操作新的验证解决了同样的问题:

例子 :

if params[:part_id]
  @traveller.part_id = params[:part_id]
elsif params[:traveller][:part_id]
  @traveller.part_id = params[:traveller][:part_id]
end 

因为用户在注册时可能会失败一次或多次


推荐阅读