error_message部分获取NameError:未定义的局部变量或方法`object'

时间:2017-05-30 01:31:22

标签: ruby-on-rails partials

我已经研究过这个错误,但我无法解决这个问题。

以下是_micropost_form.html.erb

<%= form_for @micropost do |f| %>
  <%= render partial: 'shared/error_messages', object: f.object %>
  <div class="field">
    <%= f.text_field :content, placeholder: " Caption..." %>
  </div>
  <%= f.submit "Post", class: "btn btn-primary" %>
  <span class="picture">
    <%= f.file_field :picture %>
  </span>
<% end %>

以下是_error_messages.html.erb

<% if object.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-danger">
      The form contains <%= pluralize(object.errors.count, "error") %>.
    </div>
    <ul>
    <% object.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

以下是microposts_controller

def new
  @micropost = current_user.microposts.build
  @feed_items = current_user.feed.paginate(page: params[:page])
end

3 个答案:

答案 0 :(得分:0)

一些想法:

f.object是否有值?

另外 - 尝试将object传递给部分:

<%= render partial: 'shared/error_messages', :locals => {:object => f.object} %>

答案 1 :(得分:0)

  

NameError:未定义的局部变量或方法`object&#39;

您可以通过两种方式呈现部分renderrender partial:。但是当您使用partial:时,需要在locals:哈希中发送变量。所以这不会起作用

<%= render partial: 'shared/error_messages', object: f.object %>

应该是

<%= render partial: 'shared/error_messages', locals: {object: f.object} %>

或没有partial:

<%= render 'shared/error_messages', object: f.object %>

答案 2 :(得分:-3)

您可以更改以下代码

<%= render partial: 'shared/error_messages', object: f.object %>

<%= render partial: 'shared/error_messages', object: f.object %>

我希望这对你有所帮助。