Rails 4使用关注点干扰控制器CRUD

时间:2015-02-09 19:14:49

标签: ruby-on-rails ruby-on-rails-4

我正在烘干我的Rails 4应用程序。我注意到我输入的代码完全相同,并且最好将其放在一个问题中。我只是不确定如何做到这一点,因为我怀疑它可能需要一些元代码。

我想放置(例如)这个"创建"控制器关注中的方法称为CrudGenerator:

def create
   if @contact_us.validate(params[:contact_us])
      @contact_us.save
      flash[:success] = t :create_success_flash, class_object: "Contact Us"
      respond_with(@contact_us, :location => new_contact_path)
    else
      render :new
    end
end

现在,如果转移到一个问题,即接受2个参数即可接受,即#34; contact_us"和" new_contact_path"因为这些参数在每次包含这种关注时都是独特的。这些是此代码中唯一会改变的部分。

我曾尝试使用define_method生成以下代码,但我不是100%肯定。

有关如何在问题中生成以下代码并使其成为我的ContactUsController的一部分的任何建议吗?

由于

1 个答案:

答案 0 :(得分:0)

您可以按照以下方式移动代码:

def create
  resource_class.new(permitted_resource_params)

  if resource.save
    redirect_to some_path
  else
    render :new
  end
end

然后在要添加此功能的控制器中包含此问题。要加载资源,您可以在before_action调用中执行此操作并使用params [:controller_name]加载资源.capitalize.constantize ...我希望您明白这一点