0

だから私はこのアプリケーションで見つかったマイクロポストに返信を追加しようとしています https://github.com/railstutorial/sample_app_2nd_ed

モデルとコントローラーのすべてを理解したと思いますが、それは重要なことではありません。

app/views/microposts/_micropost.html.erb に返信リンクを追加しようとすると。それは決して機能しません。

<li>
  <span class="content"><%= micropost.content %></span>
  <p>this text doesnt show up!</p>
  <span class="timestamp">
    Posted <%= time_ago_in_words(micropost.created_at) %> ago.
  </span>
  <% if current_user?(micropost.user) %>
    <%= link_to "delete", micropost, method:  :delete,
                                     confirm: "You sure?",
                                     title:   micropost.content %>
  <% end %>

  <%= link_to "reply", new_comment_path(:micropost_id => comment) %> |

  <p> why isnt this working!!?</p>
</li>

ご覧のとおり、3 行目、13 行目、15 行目に基本的なテキストまたは返信リンクを追加しようとしました。それは決して現れません。私はこれを間違っていますか?返信リンクや表示したい基本的なテキストはどのような形式で入力すればよいですか?

これが私のマイクロポストコントローラーコードです

class MicropostsController < ApplicationController
  before_filter :signed_in_user
  before_filter :correct_user,   only: :destroy

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

  def destroy
    @micropost.destroy
    redirect_back_or root_path
  end

  private

    def correct_user
      @micropost = current_user.microposts.find_by_id(params[:id])
      redirect_to root_path if @micropost.nil?
    end
end

ここに私のコメントコントローラーがあります

class CommentsController < ApplicationController 
  def create 
    @comment = @micropost.comments.new(params[:comment]) 
    if @comment.save 
      redirect_to @user
    else 
      redirect_to @user
    end 
  end 

  def destroy
    @comment.destroy
    redirect_back_or root_path
  end
end

また、リクエストに応じて、マイクロポストを部分的にレンダリングする show.html.erb ファイルを次に示します。

<% provide(:title, @user.name) %>
<div class="row">
  <aside class="span4">
    <section>
      <h1>
        <%= gravatar_for @user %>
        <%= @user.name %>
      </h1>
    </section>
  </aside>
  <div class="span8">
    <%= render 'follow_form' if signed_in? %>
    <% if @user.microposts.any? %>
      <h3>Microposts (<%= @user.microposts.count %>)</h3>
      <ol class="microposts">
        <%= render @microposts %>
      </ol>
      <%= will_paginate @microposts %>
    <% end %>
  </div>
</div>
4

2 に答える 2

0

show.html.erb で、次の行を追加して、ショー ビューで「マイクロポスト」を部分的にレンダリングする必要があります。

<%= 「マイクロポスト」をレンダリング %>

于 2013-06-13T15:55:39.550 に答える
0

コントローラーのコードを投稿できますか? 通常、erb が次のようになるように、コントローラーでメンバー変数を設定します。

<%= @micropost.content %>

そして、あなたのコントローラーは次のようになります:

def show  
  @micropost = Micropost.find(params[:id])  
end
于 2012-05-10T23:23:19.700 に答える