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 に答える