Simple_form_for,评论不会按预期显示

时间:2016-08-23 23:03:50

标签: ruby-on-rails ruby-on-rails-4 simple-form

我对评论有疑问。 如果我评论状态是什么,评论将显示在最后一个状态。

希望你能提供帮助,我可以根据需要编辑更多代码,让我知道你需要什么。

_form.html.erb

<%= simple_form_for([status, status.comments.new]) do |f|%>
 <%= f.input :content %>
 <%= f.button :submit, "Comment", class:"btn btn-primary"%>
<% end  %>

index.html.erb

<% @statuses.each do |status| %>

  <%= image_tag status.user.avatar.thumb if status.user.avatar?%>
  <%= status.user.full_name%>
  <%= simple_format(status.content) %>
  <%= link_to time_ago_in_words(status.created_at) + " ago", status %>

  <% if status.user == current_user %>
    <span class="admin">
      <%= link_to "Edit", edit_status_path(status) %> |
      <%= link_to "Delete", status, method: :delete, data: {confirm: "Are you sure?"} %>
    </span>
  <% end  %>

  <% status.comments.each do |comment| %>
    <%= comment.content %>
  <% end %>

  <%= render partial: "comments/form", locals: {status: status} %>

<% end %>

的routes.rb

Rails.application.routes.draw do

  get 'profiles/show'

  devise_for :users
  devise_scope :user do
    get 'register', to: 'devise/registrations#new', as: :register
    get 'login',    to: 'devise/sessions#new', as: :login
    get 'logout',   to: 'devise/sessions#destroy', as: :logout
  end
  resources :statuses do
    resources :comments
  end
  resources :comments

  get 'feed', to: "statuses#index", as: :feed
  root "statuses#index"

  get '/:id', to: "profiles#show"

end

statuses_controller.rb

class StatusesController < ApplicationController
  before_filter :authenticate_user!, only: [:new, :create, :edit, :update]
  before_action :set_status, only: [:show, :edit, :update, :destroy]

  def index
    @users = User.all
    @statuses = Status.all
    @comments = Comment.all
  end

  def show
    @status = Status.find(params[:id])
    @comments = @status.comments.all
  end

  def new
    @status = Status.new
    @comment = @status.comments.build
  end

  def create
    @status = Status.new(status_params)
    @status.user = current_user
    respond_to do |format|
      if @status.save
        format.html { redirect_to @status, notice: 'Status was successfully created.' }
        format.json { render :show, status: :created, location: @status }
      else
        format.html { render :new }
        format.json { render json: @status.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    respond_to do |format|
      if @status.update(status_params)
        format.html { redirect_to @status, notice: 'Status was successfully updated.' }
        format.json { render :show, status: :ok, location: @status }
      else
        format.html { render :edit }
        format.json { render json: @status.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @status.destroy
    respond_to do |format|
      format.html { redirect_to statuses_url, notice: 'Status was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    def set_status
      @status = Status.find(params[:id])
    end

    def status_params
      params.require(:status).permit( :content)
    end
end

comments_controller.rb

class CommentsController < ApplicationController

    def create
      @status = Status.find_by(params[:status_id])
      @comment = @status.comments.create(params_comment)
      @comment.save
      redirect_to statuses_path
    end

    def index
     @statuses = Status.all
     @comments = Comment.all
     @comment = Comment.find_by(params[:id])
    end


    def new
      @status  = Status.find(params[:status_id])
      @comment = Comment.new

    end
   private

   def params_comment
     params.require(:comment).permit(:content)
   end

end

我的模特

class Comment < ActiveRecord::Base
  belongs_to :status
  belongs_to :user
end


class Status < ActiveRecord::Base
  belongs_to :user
  has_many  :comments

  default_scope -> { order(created_at: :DESC)}

  validates :content, presence: true,
            length: {minimum: 2}
  validates :user_id, presence: true
end

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  mount_uploader :avatar, AvatarUploader

  validates_presence_of   :avatar
  validates_integrity_of  :avatar
  validates_processing_of :avatar


  has_many :statuses
  has_many :users

  validates :first_name,    presence: true
  validates :last_name,     presence: true

  validates :profile_name,  presence: true,
                            uniqueness: true,
                            format: {
                                    with: /\A[a-zA-Z0-9_-]+\z/,

                                    message: "Must be formatted correctly." }

  def full_name
    first_name + " " + last_name
  end

  def gravatar_url
  stripped_email =  email.strip
  end
end

谢谢

这是我和#34; Nelly Johan&#34;这是我自己的状态...... enter image description here

我的评论不是我预期的地方 enter image description here

0 个答案:

没有答案