Ruby on rails 在另一个视图中使用实例变量

Ruby on rails 在另一个视图中使用实例变量,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我试图在一个控制器的create方法中创建一个实例变量,然后在另一个控制器的视图中使用它。这可能吗 我正在微控件中创建@content变量: class MicropostsController < ApplicationController before_filter :signed_in_user, only: [:create, :destroy] before_filter :correct_user, only: :destroy def create @m

我试图在一个控制器的create方法中创建一个实例变量,然后在另一个控制器的视图中使用它。这可能吗

我正在
微控件
中创建
@content
变量:

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

将其放入数据库中,或者如果这两个方法是一个接一个的,则使用flash-its。

您不能在另一个控制器的视图中使用一个控制器中设置的实例变量。 您需要在StaticPagesController中设置它,或者您可以使用帮助器


这可能会有所帮助:

我认为您的问题与在不同控制器的视图中使用实例变量无关,而是与在局部视图中使用实例变量有关:

您可以在由
静态页面/home
呈现的视图中使用
@content
实例变量,以调用控制器为准。但不能在局部变量中使用intance变量。您需要将其作为分部的局部变量,并将其作为分部的局部变量使用。有几个语法可以在分部中传递局部变量,请参见中的示例

在您发布的代码中,
feed\u item
很可能是局部变量

<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>