我正在尝试在一个控制器的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>
答案 0 :(得分:0)
要么将它放在数据库中,要么使用flash,如果2个方法是一个接一个..
答案 1 :(得分:0)
您不能在另一个控制器视图中的一个控制器中使用实例变量集。 你需要在StaticPagesController中设置它,或者你可以使用帮助器。
这可能会有所帮助:Rails: Set a common instance variable across several controller actions
答案 2 :(得分:0)
我认为你的问题与在不同控制器的视图中使用实例变量无关,而是在部分中使用实例变量:
您可以在@content
呈现的视图中使用static_pages/home
实例变量,无论哪个是调用Controller。但是你不能在局部使用intance变量。您需要将其作为partial的局部变量,并将其用作partial中的局部变量。有几种语法可以在局部变量中传递局部变量,参见Rails guide on layouts and rendering 3.4.4中的示例。
在您发布的代码中,feed_item
很可能是您偏爱的局部变量。