سؤال

قبل أن يتم تشغيل أي من إجراءات وحدة تحكم المقالة الخاصة بي (باستثناء الفهرس) ، أريد أن أتأكد من أن الحقل النشط للمقال صحيح. فكرت في القيام بذلك في APERE_FILTER ، ولكن في هذه المرحلة لم يتم تعيين article ، أي أفكار من فضلك؟

شكرًا

هل كانت مفيدة؟

المحلول

يمكنك تعيين المقالة في طريقة المساعد وإزالة بعض تكرار التعليمات البرمجية أثناء وجودك فيه.

class .. < ApplicationController

  helper_method :current_article

  def index
    # your code etc..
  end

  private

  def current_article
    @article ||= Article.find(params[:id], :conditions => { :active => true }) || 
                 raise(ActiveRecord::RecordNotFound)
  end

end

في الأساس يمكنك الاتصال الآن current_article في عرضك ، تحرير (إلخ) الإجراءات ووجهات النظر بدلاً من @article.

نصائح أخرى

تحتاج فقط إلى القيام 2 قبل _filter.

1 مع تحميل المقالة والثاني للتحقق مما إذا كان الحقل موجود

  before_filter :load_article, :only => [:show, :edit, :update]
  before_filter :has_field, :only => [:show, :edit, :update]

  ...

  private

  def load_article
    @article = Article.find(params[:id])
  end

  def has_field
    unless @article.active
      redirect_to root_url
    end
  end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top