0

あるコントローラーのcreateメソッド内にインスタンス変数を作成し、それを別のコントローラーのビューで使用しようとしています。これは可能ですか?

@content内に変数を作成していますMicropostsController

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

  def create
    @micropost = current_user.microposts.build(params[:micropost])
    @content = 'test' #params[:micropost][:content]
    #pattern = /\A@\w+/

    #if params[:micropost][:content] =~ pattern
     # @content = params[:micropost][:content]
    #end

    if @micropost.save
      flash[:success] = "Micropost created!"
      redirect_to root_path
    else
      @feed_items = []
      render 'static_pages/home'
    end
  end

そして、クラスのビューで使用されているパーシャルで使用しようとしていますStaticPagesが、機能しません。

<li id="<%= feed_item.id %>">
  <%= link_to gravatar_for(feed_item.user), feed_item.user %>
  <span class="user">
      <%= link_to feed_item.user.name, feed_item.user %>
  </span>
  <span class="content"><%= feed_item.content %></span>
  <span class="timestamp">
    Posted <%= time_ago_in_words(feed_item.created_at) %> ago.
    <% if @content %>
      <%= @content %>
    <% else %>
      <%= 'no content' %>
    <% end %>
  </span>
  <% if current_user?(feed_item.user) %>
    <%= link_to "delete", feed_item, method: :delete,
                data: { confirm: "You sure?" },
                title: feed_item.content %>
  <% end %>
</li>
4

3 に答える 3

0

それをデータベースに入れるか、2つの方法が次々にある場合はflashitsを使用します。

于 2012-09-01T17:37:45.877 に答える
0

あるコントローラに設定されているインスタンス変数を別のコントローラのビューで使用することはできません。StaticPagesControllerで設定する必要があります。そうでない場合は、ヘルパーを使用できます。

これは役立つかもしれません:Rails:いくつかのコントローラーアクションに共通のインスタンス変数を設定します

于 2012-09-01T17:42:33.090 に答える
0

あなたの問題は、別のコントローラーのビューでインスタンス変数を使用することではなく、部分的にインスタンス変数を使用することに関連していると思います。

@contentによってレンダリングされたビューでインスタンス変数を使用できstatic_pages/homeます。これは、呼び出し元のコントローラーです。ただし、部分変数でintance変数を使用することはできません。パーシャルのローカル変数として指定し、パーシャルのローカル変数として使用する必要があります。ローカル変数をパーシャルで渡すための構文はいくつかあります。レイアウトとレンダリングに関するRailsガイドの例3.4.4を参照してください。

あなたが投稿したコードでfeed_itemは、あなたのパーシャルのそのようなローカル変数である可能性があります。

于 2012-09-01T17:57:56.800 に答える