我有控制器操作(welcome #index):
class WelcomeController < ApplicationController
def index
@card = current_user.cards.review_before(Date.today).first
@my_test_variable #this variable from another controller
end
end
我有另一个控制器:
class CardsController < ApplicationController
def review
if @card.check = true
@my_test_variable = 1
else
@my_test_variable = 2
end
redirect_to root_path #redirect to welcome#index
end
end
如何将@my_test_variable值放入动作索引控制器欢迎在视图索引中使用它?
答案 0 :(得分:2)
我不会质疑您为什么要这样做但是一个解决方案是使用参数重定向到root_path然后在另一个控制器中抓取它:
class CardsController < ApplicationController
def review
if @card.check == true
@my_test_variable = 1
else
@my_test_variable = 2
end
redirect_to root_path(my_test_variable: @my_test_variable)
end
end
class WelcomeController < ApplicationController
def index
@card = current_user.cards.review_before(Date.today).first
@my_test_variable = params[:my_test_variable] # will be a string
end
end
(顺便说一句,你在if语句中有一个拼写错误。应该是==,而不是=)
答案 1 :(得分:2)
我认为您要问的是如何将它们提供给下一个请求。把它们放在会话中:
class CardsController < ApplicationController
def review
if @card.check = true
session[:my_test_variable] = 1
else
session[:my_test_variable] = 2
end
redirect_to root_path #redirect to welcome#index
end
end
class WelcomeController < ApplicationController
def index
@card = current_user.cards.review_before(Date.today).first
session[:my_test_variable]
end
end
答案 2 :(得分:1)
卡片控制器中的登录应该在模型中,然后你不必担心你采取的方法。
处理一个请求涉及2个控制器实例非常罕见。
答案 3 :(得分:1)
简单的方法是将变量设置为全局变量,以便可以从任何控制器进行评估,然后将其变为null。
class ModelController < ApplicationController
def index
$count = 125
end
end
class PaymentController < ApplicationController
def price
puts $count
end
end