如果数组中存在值,则有条件地渲染部分

时间:2012-11-17 10:05:34

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

使用acts-as-taggable-on进行标记。基于SO的先前问题我读到我必须最小化视图中的逻辑并为视图模板中的条件创建帮助器。到目前为止,这是我的代码。 (newby rails)

路线:

resources :appartments do
  collection do
    get ':tag', to: 'appartments#index', as: :tag
    end

我的控制器:

def index
    if params[:tag]
            @apartments = Appartment.tagged_with(params[:tag])
            else
            @apartments = Appartment.all
            end
    end

申请助手:

def render_partials_conditionally
        if @apartments.include?("family")
            render :partial => 'familie'
            if @apartments.include?("groups")
            render :partial => 'groups'
        end
    end
end

这个想法(我假设)是我检查带有include的@apartments数组中是否存在值“familie”?方法

公寓索引视图

 = render_partials_conditionally   

当我去公寓/家庭时,部分_家庭必须显示,但没有任何反应......没有错误,没有参与

我做错了什么?

Grtz..remco

1 个答案:

答案 0 :(得分:0)

如果Appartment是模型,则@apartments应该是一个对象数组,因此@apartments.include?("family")@apartments.include?("groups")永远不会成立。 相反,代码可能是这样的:

@apartments.any? { |apartment| apartments.some_field == "groups" }

但是我觉得它还不够好。更好的方法可能是帮助程序只返回partial的名称,然后在视图中呈现部分。