[英]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.