我对rails和haml上的ruby相对较新。我想从haml中获取我的JSON对象的名称。
我的.rb文件中有这个
campaigns = '[{"name":"Campaign_1"},{"name":"Campaign_2"},{"name":"Campaign_3"}]'
render "evaluate" , :locals => {:campaigns => campaigns}
我想打印出" Campaign_1"," Campaign_2" ......从名字。这是我在haml文件中的内容。我已经尝试过这种for循环的几种变体,但没有一种非常有效。这是我最新的一个。
这是我在haml文件中的内容:
- for campaign in @campaigns
%input{:type => "checkbox"}
- campaign.name
这给了我
undefined method `each' for nil:NilClass`
任何帮助将不胜感激。谢谢!
重要提示: 这个haml文件是部分
答案 0 :(得分:1)
@campaign
未定义,因为您在控制器中创建了局部变量,而不是实例变量
您需要在控制器中添加@campaigns
才能在视图中访问它。
编辑:
控制器:
@campaigns = '[{"name":"Campaign_1"},{"name":"Campaign_2"}.{"name":"Campaign_3"}]'
render "evaluate" , :locals => {:campaigns => campaigns}`
查看:
- for campaign in @campaigns
%input{:type => "checkbox"}
- campaign.name
答案 1 :(得分:1)
您可以使用本地人将值传递给您的视图。在您的控制器代码中,您需要将JSON转换为哈希并修复本地语法:
json_campaigns = '[{"name":"Campaign_1"},{"name":"Campaign_2"},{"name":"Campaign_3"}]'
campaigns = JSON.parse json_campaigns
render "evaluate" , :locals => {campaigns: campaigns}
在您看来:
- campaigns.each do |c|
%input{:type => "checkbox"}
= c["name"]