Я только что сделал rails g scaffold Feedback feedback:string user_id:integer
. Когда я перехожу к 0.0.0.0:3000/feedbacks/new, все работает отлично. Но когда я пытаюсь поместить форму обратной связи внутри модальной, я получаю эту ошибку: undefined method "model_name" for NilClass:Class
. Я столкнулся с проблемой, но не могу найти решение, которое работает.Rails: undefined method `model_name 'для NilClass: Class
Кто-нибудь знает, что может быть решением этого?
обратные связи/_form.html.erb (я использую simple_form)
<%= simple_form_for(@feedback) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :feedback %>
<%= f.input :user_id %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
обратные связи/new.html.erb
<h1>New feedback</h1>
<%= render 'form' %>
<%= link_to 'Back', feedbacks_path %>
обратные связи/_feedback_modal.html.erb
<div id="activate_feedback_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-body">
<%= render "feedbacks/form" %>
</div>
</div>
feedbacks_controller.rb (new
и create
действие)
class FeedbacksController < ApplicationController
def new
@feedback = Feedback.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @feedback }
end
end
def create
@feedback = Feedback.new(params[:feedback])
respond_to do |format|
if @feedback.save
format.html { redirect_to @feedback, notice: 'Feedback was successfully created.' }
format.json { render json: @feedback, status: :created, location: @feedback }
else
format.html { render action: "new" }
format.json { render json: @feedback.errors, status: :unprocessable_entity }
end
end
end
end
lelist.html.erb (где я сделать модальный)
<div class="lelist_body">
<div class="container" id="dk">
<% if current_user %>
<div class="row">
<div class="span6 offset3" id="user_post_area_button">
<a class="big_fat_feedback_button" href="#activate_feedback_modal" data-toggle="modal">feedback</a>
</div>
</div>
<% end %>
<%= render 'pages/singlePost' %>
</div>
<div class="row">
<div class="span6 offset3">
<%= will_paginate @posts %>
</div>
</div>
</div>
<%= render "feedbacks/feedback_modal" %>
Где вы оказываете модальный? Вероятно, '@ feedback' недоступен из модального вида, поэтому это' nil'. 'form_helper' пытается сгенерировать url из класса' nil', который является 'nilClass' и не имеет атрибута' model_name'. –
Действие 'lelist' в вашем контроллере (которое отображает' lelist-view', имеет ли он '@feedback = Feedback.new'? –
ДА! Это @Tim. Я просто добавил '@feedback = Feedback.new' к действию. Спасибо! Отправьте это как ответ, и я приму это :) (Я немного новичок в рельсах, не могли бы вы дать короткое объяснение или ссылку на то, где я могу прочитать, почему я должен был это делать?) , – allegutta