【问题标题】:passing a variable from controller to view in rails 4将变量从控制器传递到 Rails 4 中的视图
【发布时间】:2013-11-29 16:36:27
【问题描述】:

我想将一个变量值从控制器传递给视图,如下所示

控制器 (.rb)

redirect_to root_url, :some_var => 'true or false'

查看(root_url.html.erb)

<% if :some_var %>
   #do something
<% else %>
   #do something else.

谁能给我一个想法。提前致谢。

【问题讨论】:

标签: ruby-on-rails templates ruby-on-rails-4 erb


【解决方案1】:

然后将该变量作为查询字符串传递

redirect_to root_url(foo: 'bar')

这将产生类似的网址

example.com?foo=bar

另一种方法是使用 flash 对象

redirect_to root_url, notice: "This is some info to convey"

Flash 传送临时变量:

flash[:foo] = 'bar'
redirect_to root_url

# View
<% if flash[:foo] %>
  <%= "This is #{flash[:foo]} value" %>

【讨论】:

  • 但是如何在视图或模板中检查 foo 的值。
  • 我可以使用除 flash 之外的任何东西吗?或者可能只是 :foo
  • 很好。 flash 的好处是它在下一个请求中被删除。但是,请仍然注意这种模式,不要滥用 session/flash :)
【解决方案2】:

最好的方法是渲染,而不是重定向,因为你还没有完成整个动作。然后只需在控制器操作中使用实例变量:

@some_var = true or false
render root_url

根:

if @some_var 
   do blah

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多