在控制器中建立关联的更好方法

better way to build association in controller

我需要在父 class 的显示方法中使用 link 来创建关联模型,所以我有代码:

link_to "incomplete", new_polymorphic_path(part_c.underscore, :survey_id => survey.id)

在助手中。

这 link 部分,其中有这样的新代码:

# GET /source_control_parts/new
def new
  get_collections
  if params[:survey_id]
    @s = Survey.find(params[:survey_id])
    if @s.blank?
      @source_control_part = SourceControlPart.new
    else
      @source_control_part = @s.create_source_control_part
    end
  else
    @source_control_part = SourceControlPart.new
  end
end

我知道这不是很干。我怎样才能简化这个?有 RAILS 方法吗?

这个怎么样:

def new
  get_collections
  get_source_control_part
end

private
def get_source_control_part
  survey = params[:survey_id].blank? ? nil : Survey.find(params[:survey_id])
  @source_control_part = survey ? survey.create_source_control_part : SourceControlPart.new
end