簡體   English   中英

rails 3,如何通過不保存的Controller#create動作設置和傳遞查詢字符串

[英]rails 3, How to set and pass a query string through an Controller#create action that doesn't save

我有3個用戶按順序查看的視圖,首先,他們選擇一個位置,然后選擇一個類別,然后將他們發送到表單。 第一個視圖將位置信息發送到類別選擇視圖。 從類別選擇視圖中,我正在使用查詢字符串將類別ID發送到表單。 在Controller#new動作中,我將查詢字符串放入實例變量中:@award = Award.find(params [:award])

問題是,如果用戶未填寫適當的字段,則表單不會保存,並且查詢字符串不再存在。 在我的情況下,這意味着建議不再具有類別,該類別將繼續使表單失敗。

如何通過失敗的創建操作來保留查詢字符串?

def create
    @recommendation = Recommendation.new(params[:recommendation])
    @recommendation.user_id = current_user.id


    respond_to do |format|
      if @recommendation.save
        format.html { redirect_to location_path, notice: 'Recommendation was successfully created.' }
        format.json { render json: @recommendation, status: :created, location: @recommendation }
      else
        format.html { render action: "new" }
        format.json { render json: @recommendation.errors, status: :unprocessable_entity }
      end
    end
  end

編輯_

我想可以將新操作分享給:

def new
    @recommendation = Recommendation.new
    @award = Award.find(params[:award])
    @recommendation.approvals.build
    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @recommendation }
    end
  end

好吧,因為查詢字符串已經從新動作傳遞到了create動作,所以如果create動作失敗,它將命中您的'format.html {render action:“ new”}'行。

您可以執行以下操作:

format.html {redirect_to thing_path(@thing, :foo => params[:foo])}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM