0

我的 Ruby on Rails 应用程序遇到了问题。我有一个名为 /discussion 的页面,其中包含用户可以通过微博发表评论的讨论。这里的目标是在每个微博下方有一个表单,提交时会将文本放入讨论中。表单出现了 - 但每当我点击提交时,我都会收到错误消息:

NoMethodError in MicropostsController#create

undefined method `micropost' for #<User:0x007f9744091680>
Rails.root: /home/nick/Documents/RailsProjects/buon

Application Trace | Framework Trace | Full Trace
app/controllers/microposts_controller.rb:8:in `create'

微柱控制器

class MicropostsController < ApplicationController
  before_filter :signed_in_user, only: [:create, :destroy]

  def index
  end

  def create
    @micropost = current_user.micropost.build(params[:micropost])
     if @micropost.save
       flash[:success] = "Posted!"
       redirect_to root_url
     else
       render 'static_pages/home'
     end
  end

  def destroy
  end
end

_discusions.html

<% content_for :script do %>
<%= javascript_include_tag 'hover_content' %>
<% end %>

<li>
  <div class = "intro-bar"><span class = "intro"><%=discussion.intro %></span></div>
  <div class = "content-bar"><span class = "content"><%= discussion.content %></span></div>
  <span class = "timestamp">
    Posted <%= time_ago_in_words(discussion.created_at) %> ago.
  </span>
</li>
<% if signed_in? %>
<div class = "row">
  <aside class = "span4">
    <section>
      <%= render 'shared/micropost_form', :locals => {:discussion => discussion }%>
    </section>
  </aside>
</div>
<% end %>

微柱模型

class Micropost < ActiveRecord::Base
  attr_accessible :break_votes, :content, :not_votes
  belongs_to :user
  belongs_to :discussion


  validates :content, presence: true, length: { maximum: 200 }
  validates :user_id, presence: true
  default_scope order: 'microposts.created_at DESC'
end

有任何想法吗?

4

1 回答 1

0

如果这是has_many您需要复数的关联,那么您的代码应为:

@micropost = current_user.microposts.build(params[:micropost])
于 2013-06-10T22:33:22.630 回答