Ruby on rails 在另一个视图中使用实例变量
我试图在一个控制器的create方法中创建一个实例变量,然后在另一个控制器的视图中使用它。这可能吗 我正在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
微控件
中创建@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>