我正在尝试使用与模型名称不同的名称渲染集合的一部分:
<%= 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
会使这项工作成功,但显然不是。有什么想法吗?
答案 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用作部分的定义变量。