Rails - 将部分集合渲染为无效

时间:2016-11-09 15:31:37

标签: ruby-on-rails

我正在尝试使用与模型名称不同的名称渲染集合的一部分:

<%= render "current_campaigns", collection: @current_campaigns, as: :current_campaign %>

该模型称为Campaign,但这是控制器操作中定义的广告系列的一部分:

def index
  @current_campaigns = Campaign.where(status: :approved)
end

在partial(位于应用程序目录而不是campaign目录中):

<%= current_campaign.question %>

产生的错误:

undefined local variable or method `current_campaign' for #<#<Class:0x007fad3d5e5500>:0x007fad451976a8>

我认为as会使这项工作成功,但显然不是。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

尝试以下方法 <%= render partial: 'path-relative-to-views/current_campaigns', collection: @current_campaigns, as: :current_campaign %> 部分名称_current_campaign.html.erb为惯例。

答案 1 :(得分:0)

尝试将campaign / current_campaigns.html.erb模板重命名为campaign / campaign.html.erb,并从广告系列/中进行渲染:

map2

否则,您可以指定部分所在的目录名称:

purrr::map2_df(df[1:n], df[(n + 1):ncol(df)], `*`)

# A tibble: 2 x 2
#     v1    v2
#  <dbl> <dbl>
#1     7    20
#2    20    18

答案 2 :(得分:0)

使用自定义名称将属性传递给partial的最简单方法是:

<%= render "current_campaigns", custom_name: @current_campaigns %>

执行此操作,您将能够将custom_name用作部分的定义变量。