ruby-on-rails 呈现新表单时丢失简单表单的url中的参数

6ie5vjzr  于 2023-02-26  发布在  Ruby
关注(0)|答案(2)|浏览(129)

我在我的Ruby on 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中。

flvlnr44

flvlnr441#

我找到了解决办法,
行动中新闻:

@traveller.part_id = params[:part_id]
pbwdgjma

pbwdgjma2#

我在控制器action new中通过验证修复了相同的问题:
示例:

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

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

相关问题