[英]Conditional statement fails Rails 4
我正在開發一個Rails應用程序,該應用程序的引腳在創建時會分配一個類別。 該應用程序共有16個類別。 所有圖釘都顯示在主索引頁面上(類別16除外),用戶可以單擊圖釘,將其帶到@Pin的顯示頁面。 “顯示”頁面具有@Pin和一個從數據庫中的所有引腳(類別16除外)中選擇的隨機引腳。 上面提到的動作在引腳控制器中定義,並且功能正常。
問題是,當選擇類別16且用戶進入“引腳顯示”頁面時,隨機引腳應僅是類別16中的引腳,但它是從數據庫中的所有引腳中選擇的!
我已經在索引中設置了變量和條件語句,並顯示了實現上述目標的操作,請在pin控制器show-action中檢查我的注釋。 問題代碼在注釋中仍然存在====有些錯誤!====
請幫助我對Rails還是比較陌生的。我不確定自己做錯了什么,我花了數小時嘗試了各種嘗試,但沒有任何效果。
pins_controller索引動作
def index
if params[:category].blank?
@restricted = Category.find(16) # category id 16 set as var @restricted used to exclude cat 16 from index page in line below.
@pins = Pin.where.not(category: @restricted).all.order("created_at DESC").paginate(page: params[:page], per_page: 20)
else
@category_id = Category.find_by(name: params[:category]).id
@pins = Pin.where(category_id: @category_id).order("created_at DESC").paginate(page: params[:page], per_page: 20)
end
pins_controller show-action問題
def show
@pin.increment_view_count
@show_main_cat = Category.where.not(16) # all categories except category id 16 set as var @show_main_cat
if @show_main_cat.present?
@restricted = Category.find(16) # category id 16 set as var @restricted.
@random_pin = Pin.where.not(id: @pin, category: @restricted).order("RANDOM()").first # select random pin from all categories except 16 + not @pin.
end
@show_restricted_cat = Category.find(16) # category 16 set as var @show_restricted_cat < ==========SOMETHING WRONG!==============
if @show_restricted_cat.present?
@restricted = Category.where.not(16) # all categories except 16 set as var @restricted.
@random_pin = Pin.where.not(id: @pin, category: @restricted).order("RANDOM()").first # Only select random pin from category 16 + not @pin.
end
@reviews = Review.where(pin_id: @pin.id).order("created_at DESC").limit(5)
if @reviews.blank?
@avg_review = 0
else
@avg_review = @reviews.average(:rating).round(2)
end
這行不是您所期望的
@random_pin = Pin.where.not(id: @pin, category: @restricted).order("RANDOM()").first # Only select random pin from category 16 + not @pin.
它將從類別16或ID而不是@pin中選擇一個隨機的引腳(您希望我從類別16和ID而不是@pin中得到的想法 )。 更改為:
@random_pin = Pin.where.not(category: @restricted).where.not(id: @pin).order("RANDOM()").first
玩得開心!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.