【问题标题】:Passing an argument on request.referrer在 request.referrer 上传递参数
【发布时间】:2016-02-13 03:05:09
【问题描述】:

我正在构建一个站点,可以从Event show page 中单击填写新表单的链接

<%= link_to 'Be a Contestant', new_form_path(:event_id => @event.id)%>

这会创建一个类似的链接

http://localhost:3000/forms/new?event_id=2

现在如果表单填写错误,提交时返回错误

Couldn't find Event with 'id'=""

所以我决定使用request.referrer 重定向回上一页,但它没有列出使用此方法的错误

def create
  @form = Form.new(form_params)

  respond_to do |format|
    if @form.save
      format.html { redirect_to @form, notice: 'Form was successfully created.' }
      format.json { render :show, status: :created, location: @form }
    else
      format.html { redirect_to request.referrer }
      format.json { render json: @form.errors, status: :unprocessable_entity }
    end
  end
end

我也试过了,但没用。

def create
  @form = Form.new(form_params)

  respond_to do |format|
    if @form.save
      format.html { redirect_to @form, notice: 'Form was successfully created.' }
      format.json { render :show, status: :created, location: @form }
    else
      format.html { redirect_to new_form_path(:event_id => request.referrer.params[:event_id]) }
      format.json { render json: @form.errors, status: :unprocessable_entity }
    end
  end
end

【问题讨论】:

    标签: ruby-on-rails ruby http


    【解决方案1】:

    您可能真正需要做的是在表单中添加一个隐藏字段event_id,因为我敢打赌event_id 不会从#new 传播到#create 操作。

    有关hidden_field_tag的更多信息,请参阅here

    【讨论】:

      【解决方案2】:

      create 出现错误时,您通常只渲染edit 视图:

      def create
        @form = Form.new(form_params)
      
        respond_to do |format|
          if @form.save
            format.html { redirect_to @form, notice: 'Form was successfully created.' }
            format.json { render :show, status: :created, location: @form }
          else
            format.html { render :edit, alert: 'Error creating ...' }
            format.json { render json: @form.errors, status: :unprocessable_entity }
          end
        end
      end
      

      【讨论】:

        猜你喜欢
        • 2016-12-07
        • 2017-09-02
        • 1970-01-01
        • 2013-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-22
        相关资源
        最近更新 更多