неопределенный метод `имя_модели 'для nil: проблема NilClass с формой simple_form - PullRequest
0 голосов
/ 20 мая 2019

simple_form создает проблему:

screenshot errors

Я объясню, что я сделал: у меня 2 скаффолда:

questions / _form.html.erb

<%= simple_form_for(@question ) do |f| %>
  <%= f.error_notification %>
  <div class="field">
    <div class="control">
      <%= render "info_users" %>

      <%= f.input :question, label: "Quelle est votre question ou votre suggestion ?", input_html: { class: "textarea "}, wrapper: false, label_html: {class: "label"}, placeholder: "Commencez vos Questions par << Comment >>, << Pourquoi>>, << Que >>, etc...", autofocus: true %>
    </div>
  </div>
  <%= f.button :submit,'Ajouter Une Question', class: "button is-info is-rounded " %>
<% end %>

courses / _form.html.erb

<%= simple_form_for(@course) do |f| %>
  <%= f.error_notification %>    
  # here go all inputs
  <%= f.button :submit," Créer le Cours" ,class: "button is-info is-large is-rounded" %>
<% end %>

Теперь я использую эти две формы в своем домашнем представлении, и именно тогда simple_form становится проблемой.Вот код вызова партиалов в home / _feed.html.erb

Примечание: я создал частичный _feed.html.erb в home, чтобы отобразить его в index.html.erb

home / _feed.html.erb

<% if user_signed_in? %>
  <article class="media box">
    <div class="media-content">
      <%= render :partial => "questions/form" %>
    </div>
    <div class="media-content">
      <%= render :partial => "courses/form" %>
    </div>
  </article>
<% end %>

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

У вас нет определенных @question и @course для форм, потому что теперь вы визуализируете их из HomeController # index.Кроме того, плохая идея использовать переменные экземпляра в партиалах, потому что трудно сказать, откуда они приходят в партиал.Используйте только локальные переменные и передайте их частичным

# questions/_form.html.erb    
<%= simple_form_for(question) do |f| %>
  # form code goes here
<% end %>

# the same for courses/_form.html.erb, change @course to course

# home/_feed.html.erb    
<%= render partial: "questions/form", question: @question %>
<%= render partial: "courses/form", course: @course %>

Определите переменные экземпляра в home_controller.rb

def index
  @question = current_user.questions.new # I suppose you want to create associated records
  @course = current_user.courses.new
end
0 голосов
/ 20 мая 2019

Возможно, вы не задали новый вопрос в QuestionsController

def new
  @question = Question.new
end
...