0

最初我的视图设置如下:

<%= render layout: 'form' do |f| %>

 <% for holiday in Holiday.find(:all) %>
 <label class="checkbox">
  <%= check_box_tag "user[holiday_ids][]", holiday.id, @user.holidays.include?(holiday) %>
  <%= holiday.name %>
</label>

其中呈现了 8 个“兴趣”的列表。但是,我需要这 8 个中的 3 个来拥有唯一的 div id,以便在选中时使用 jquery 显示/隐藏功能来显示它们下方的 div。为此,我只是将上述 erb 代码呈现的 html 粘贴到我的视图中并手动修改它以使用 jquery 语句(粘贴在下面)。我的问题是在 jquery 显示的这些 div 中我需要有一个由我的应用程序中的另一个模型填充的下拉列表。我该如何实现?我在第一个 div 中尝试了该语句,但它导致以下错误(代码取自我的 _form 部分):

undefined method `map' for nil:NilClass
Extracted source (around line #12):

9:       </ul>
10:     </div>
11:   <% end %>
12:   <%= yield f %>
13:   
14:   <div class="actions">
15:     <%= f.submit "Continue" %>

这是我的 _form 部分:

<%= form_for @user, url: wizard_path do |f| %>
  <% if @user.errors.any? %>
    <div class="error_messages">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
      <ul>
      <% @user.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <%= yield f %>

  <div class="actions">
    <%= f.submit "Continue" %>
    or <%= link_to "skip this step", next_wizard_path %>
  </div>
<% end %>

这是我正在尝试的 HTML + erb 语句。

<%= render layout: 'form' do |f| %>
<div id="checkbox">
<label class="checkbox">
<input id="user_holiday_ids_" name="user[holiday_ids][]" type="checkbox" value="2" />
Valentine Day
</label>
</div>
<div style="display:none;">
<%= select_tag 'Interests', options_for_select(@interests) %>
</div>

<div id="checkbox">
<label class="checkbox">
<input id="user_holiday_ids_" name="user[holiday_ids][]" type="checkbox" value="4" />
Mothers Day
</label>
</div>
<div style="display:none;">
Whatever you have to capture here<input type="text" id="foo2" />
</div>
<label class="checkbox">
<input id="user_holiday_ids_" name="user[holiday_ids][]" type="checkbox" value="7" />
Thanksgiving
</label>
<div id="checkbox">
<label class="checkbox">
<input id="user_holiday_ids_" name="user[holiday_ids][]" type="checkbox" value="5" />
Father's Day
</label></div>
<div style="display:none;">
Whatever you have to capture here<input type="text" id="foo3" />
</div>
<label class="checkbox">
 <input id="user_holiday_ids_" name="user[holiday_ids][]" type="checkbox" value="3" />
 Easter
</label>

<label class="checkbox">
 <input id="user_holiday_ids_" name="user[holiday_ids][]" type="checkbox" value="6" />
 Halloween
</label>
<label class="checkbox">
  <input id="user_holiday_ids_" name="user[holiday_ids][]" type="checkbox" value="8" />
  Christmas
</label>​
<% end %>
4

2 回答 2

0

我从来没有见过<%= yield f %>

你不必这样做:

<%= yield 'form', {:f => f} %>

祝你好运。

于 2012-05-14T03:25:57.347 回答
0

我想我有一个类似的问题,视图没有看到我的变量,这就是我修复它的方法

  <% @resources.each do |resource| %>
    <%= render 'layouts/resources_expanded', :resource => resource %>
  <% end %>
于 2012-05-14T00:44:30.780 回答