Rails: как исправить неопределенную ошибку метода в форме?

У меня есть форма с флажком. Вот форма:

<div class="border-form-div">
<%= form_for(@user, class: "form-horizontal")  do |f| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

      <ul>
      <% @user.errors.each do |attribute,message| %> 

        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>



  <% if @user.role == "candidat" %>


    <%= f.fields_for :profileable do |pf| %>

      <div class="field">
        <%= f.label :actif %> <br />
        <%= f.check_box :actif, {}, true, false %> <br />
     </div>

  <% end %>

  <br>

  <div class="actions">
    <%= f.submit "Mettre à jour",class: 'btn btn-primary' %>
  </div>

<% end %>
</div>

Я хочу перейти на страницу редактирования: http://localhost:3000/users/3/editНо у меня есть следующая ошибка:

undefined method `actif' for #<User:0x007fadc2674c48>
Extracted source (around line #35):


      <div class="field">
        <%= f.label :actif %> <br />
        <%= f.check_box :actif, {}, true, false %> <br />
     </div>

Кажется, что он не распознает actif как атрибут. В чем проблема. Actif - это новое поле в моей модели и форме.

1 ответ

Решение

Измените f.checkbox на pf.checkbox, я думаю.

<%= f.fields_for :profileable do |pf| %>

  <div class="field">
    <%= pf.label :actif %> <br />
    <%= pf.check_box :actif, {}, true, false %> <br />
 </div>
Другие вопросы по тегам