2016-02-13 17 views
0

我要建在哪裏可以從Event show page上request.referrer

<%= 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 

回答

0

什麼你可能真的需要做的是一個隱藏字段event_id添加到形式,因爲我敢打賭,event_id沒有得到來自#new傳播到#create行動。

有關更多信息,請參見herehidden_field_tag

0

你通常只是渲染edit視圖時create出現了一個錯誤:

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