我坚持将变量值从控制器传递给部分。我拥有来自控制器:SkillSetsController
的@skillSetData技能集数据库中的所有数据def skillsetdata
@skillSetData = SkillSet.all
end
以下关于skill_set / skillsetdata.html.erb的代码显示所有数据。
<% @skillSetData.each do |single_skill| %>
<option value="<%= single_skill.skillname %>"><%=single_skill.skillname %></option>
<% end %>
但是如果skillsetdata.html.erb是部分ie:_skillsetdata.html.erb,我无法传递变量。我写的_skillsetdata的代码是:
<% skills_set_data.each do |single_skill| %>
<option value="<%= single_skill.skillname %>">
<%=single_skill.skillname %>
</option>
<% end %>
我想让它变得局部,因为它具有必须在各种其他页面上呈现的下拉列表。我想要使用的其中一个页面是:static_pages / home.html.erb,它来自不同的控制器,即:staticPages。我在帮助后尝试的代码是:
<%= render partial: 'skill_sets/skillsetdata', locals: { skills_set_data:@skillSetData } %>
但我收到的错误是: nil的未定义方法`each':NilClass 在skill_sets / _skillsetdata.html.erb中 在尝试加载home.html.erb时。我无法从部分页面中的不同页面之间传递数据。
任何有关示例代码的帮助都会有所帮助。
答案 0 :(得分:0)
要将实例变量传递给局部变量,您可以使用locals
:
# view from
<%= render partial: 'skillsetdata', locals: { skills_set_data: @skillSetData } %>
在本地,您会收到该实例变量的值,该变量现在是本地变量:
# partial
<% skills_set_data.each do |single_skill| %>
<option value="<%= single_skill.skillname %>">
<%=single_skill.skillname %>
</option>
<% end %>
答案 1 :(得分:0)
我想你在这里遇到问题:skill_sets/skillsetdata
<%= render partial: 'skill_sets/skillsetdata', locals: { skills_set_data:@skillSetData } %>
正如你写的那样:
以下关于skill_set / skillsetdata.html.erb的代码显示所有数据。
正确的名称是:skill_set/skillsetdata
这是正确的名称:
<%= render partial: 'skill_set/skillsetdata', locals: { skills_set_data:@skillSetData } %>