【问题标题】:pass variable to rails 3将变量传递给rails 3
【发布时间】:2013-02-03 13:22:49
【问题描述】:

我正在尝试将变量传递给部分,以便可以在部分中调用它 这就是我渲染部分的方式

 = render :partial => "layouts/reveal_delete", :resource => @schedule

这就是我在部分中调用变量的方式,尽管它似乎没有工作

#RevealDelete.reveal-modal
%a.close-reveal-modal ×
  %h3= "Delete #{@resource}"
  %p Are you sure you want to delete this?
  =link_to "Delete #{@resource}", @resource, :method => :delete, :class => "button close-reveal-modal"
  %a.button.alert.close-reveal-modal Cancel

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 partial zurb-foundation


    【解决方案1】:

    这样称呼:

    = render :partial => "layouts/reveal_delete", :locals => { :resource => @schedule }
    

    然后在partial里面,可以通过引用resource(没有@)来使用,像这样:

    %h3= "Delete #{resource}"
    

    不过,通常情况下,您会将局部变量命名为 schedule 以匹配实例变量,因此:

    = render :partial => "layouts/reveal_delete", :locals => { :schedule => @schedule }
    

    然后你可以在你的部分引用schedule。

    如果您愿意,也可以删除 :partial 和 :locals 选项键,并使用以下更短的语法:

    = render "layouts/reveal_delete", :schedule => @schedule
    

    在这里,Rails 假设如果您传入一个字符串作为您的第一个参数,那么第一个参数是您的部分名称,其余的被解释为局部变量赋值。这里是an answer discussing this syntax:

    docs 中的更多信息。

    【讨论】:

    • 完美,虽然有人告诉我:locals 在 rails 3 中被贬值了
    • 我在文档中看到了,所以应该还是可以使用的。但您也可以删除:partial => 键和:locals =>,这样可以缩短:= render "layouts/reveal_delete", :schedule => @schedule。
    • 我将如何使用类似于 %li= link_to "javascript:void(0);", :data => {"reveal-id" => "RevealDelete"}, :item => full_name(user), :resource => user 的 link_to 并将变量传递给部分。因为我只想渲染部分一次并且能够交换变量
    • 对不起,我不明白你的意思。
    • 说我在一个表中有多个用户,并且可以选择删除他们,id只想渲染部分删除一次,然后通过他们的变量
    猜你喜欢
    • 2011-06-09
    • 2014-10-12
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    相关资源
    最近更新 更多