Ruby on rails 如何在Rails中拥有条件视图?

Ruby on rails 如何在Rails中拥有条件视图?,ruby-on-rails,views,conditional,Ruby On Rails,Views,Conditional,我在一个应用程序中看到了一个我希望能够实现的功能。该应用程序有多个资源-照片、文章等。。在照片和文章选项卡旁边的导航栏中有两个按钮-组织和个人。如果单击组织按钮,然后单击照片或文章,则会得到属于组织成员的所有照片和文章的列表。如果他们单击“个人”按钮,然后单击照片或文章,他们只会获得个人照片和文章的列表,而忽略了属于组织其他成员的资源。所以我想知道如何在请求之间保持这种状态 我设想一种方法是在视图和控制器之间不断传递一个变量,并基于该变量列出特定的资源。或者在会话中保存状态(尽管我认为这应该作为

我在一个应用程序中看到了一个我希望能够实现的功能。该应用程序有多个资源-照片、文章等。。在照片和文章选项卡旁边的导航栏中有两个按钮-组织和个人。如果单击组织按钮,然后单击照片或文章,则会得到属于组织成员的所有照片和文章的列表。如果他们单击“个人”按钮,然后单击照片或文章,他们只会获得个人照片和文章的列表,而忽略了属于组织其他成员的资源。所以我想知道如何在请求之间保持这种状态

我设想一种方法是在视图和控制器之间不断传递一个变量,并基于该变量列出特定的资源。或者在会话中保存状态(尽管我认为这应该作为最后手段)。另一种方法是使用装饰器,如
draper
,但我对实现此功能的具体细节感到困惑。如果有人给我看一篇文章或一篇教程,说明如何实现这样一个特性,或者只是提供一个步骤的概述,我将非常感激

需要说明的是,还有一个:有链接可以索引不同的资源,但是基于一个参数,相应控制器的索引操作返回不同的结果。比如:

def index
  if params[:type] == 'organization'
    @photos = Organization.find_by(id: params[:organization][:id]).photos
  else
    @photos = User.find_by(id: params[:user][:id]).photos
  end
end
问题是-我如何传递
类型
参数-在路径帮助程序中对其进行硬编码,并对该参数具有不同值的不同视图,还是有更好的方法

这是我的模型之间的关系:


class用户

class-Photo

类组织
它可以通过许多不同的方式解决,但例如,如果我了解你,其中之一就是参考资料照片、文章等。。有一个字段可以是“组织”或“个人”。之后,通过在应用程序中单击此项,您可以按该字段筛选资源(文章、照片等)

一切都取决于情况,也许另一个解决方案是创建完全分离的模块,在其中存储组织、个人等内容。如果您想扩展后者,最好在组织和个人旁边添加其他内容

正如我所说,一切都取决于形势和项目

其他:

好的,从您的示例中,我可以看到,通过单击用户链接,您将拥有用户id。因此,您可以轻松显示该用户的所有照片:

# params[id] - user id which is got by clicking

user = User.find(params[id])
@photos = user.photos

通过使用URL参数重新加载页面

我有一个类似的问题,有两种不同的方法来传递参数,这取决于你想要什么。实际上,我只是通过url传递它们。如果将
?type=organization
附加到url,您将在参数中获得一个额外的键值对,
“type”=>“organization”
,您可以直接使用它。如果您想通过链接访问此URL,只需执行
link\u to photos\u path+“?type=organization”
。我最终使用javascript,因为我想要的不是链接。不管您的html元素是什么,都给它一个属性
onclick=changeParam()
,然后在javascript中定义该函数

function changeParam() {
    window.location.search = "?type=organization"
}
将自动重新加载具有该参数的同一页面。如果您想要多个,请将
¶m2=value2
附加到您目前拥有的内容

通过AJAX

如果不想完全刷新页面,还可以使用AJAX传递参数。如果您已经知道如何使用AJAX,只需使用数据选项:

$.ajax({
        type: "GET",
        url: "/photos",
        data: { type : organization, param2 : value2 }
})

在这种情况下,通过数据发送参数。如果您想了解更多关于AJAX以及如何使用AJAX的信息,请告诉我,我将更新我的答案,并提供更多详细信息。Rails中的内容非常混乱,而且没有好的文档,因此如果您愿意,我将添加我知道的内容。

问题是照片同时属于用户和组织,用户属于组织,组织中有许多用户和照片。您能提供您的模型的外观吗(组织机构代码、用户代码、照片代码、文章代码)
# params[id] - user id which is got by clicking

user = User.find(params[id])
@photos = user.photos
function changeParam() {
    window.location.search = "?type=organization"
}
$.ajax({
        type: "GET",
        url: "/photos",
        data: { type : organization, param2 : value2 }
})