首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3个用例和索引方法

3个用例和索引方法
EN

Stack Overflow用户
提问于 2009-01-21 16:16:05
回答 2查看 146关注 0票数 1

我写了下面的代码,这些代码似乎不起作用,但如果我删除最后一个If语句,它确实起作用了,显然只适用于前两个用例。有没有更好的方法来写这段代码?在我的路由文件中

代码语言:javascript
复制
map.resources :galleries
map.resources :users, :has_many => :galleries

用户点击链接" galleries“并查看所有已发布的画廊的列表。(mysite.com/galleries)

用户可以点击链接“我的画廊”并看到她自己的所有画廊。(mysite.com/users/21/galleries)

用户可以点击其他用户个人资料上的链接,查看该用户发布的图库。(mysite.com/users/35/galleries)

代码语言:javascript
复制
if params[:user_id].blank?
   @galleries = Gallery.find(:all, :conditions => ['visibility_status=  ?', true])
   end

if (params[:user_id] && current_user.id.to_s == params[:user_id])
    @galleries = current_user.galleries
end

if params[:user_id]
    @galleries = Gallery.find(:all, :conditions => ['user_id=? and
    visibility_status = ?', params[:user_id], true])
end 
EN

回答 2

Stack Overflow用户

发布于 2009-01-21 16:24:22

首先,我不是Ruby程序员。

但是--你不应该使用if - else if - else if - end等等吗?

如果第二个条件为真,则第三个条件始终为真,因此即使在第二个测试中已经设置了@galleries,也总是使用第三个测试覆盖它。

票数 1
EN

Stack Overflow用户

发布于 2009-01-21 16:42:05

您拥有的路由看起来是合适的,使用这些路由,您的控制器和视图中有一堆可用的帮助器方法:例如user_galleries_url(@user)user_galleries_url(@user, @gallery)等。看看resource routing你能做些什么。

唯一的建议是稍微修改一下您的逻辑,并将其放入一个

app/controllers/galleries_controller.rb

代码语言:javascript
复制
class GalleriesController < ActionController::Base
  before_filter :get_galleries, :only => 'index'

  private
    def get_galleries
      if params[:user_id]
        if params[:user_id] == current_user.id.to_s
          @galleries = current_user.galleries
        else
          @galleries = Gallery.find(:all, :conditions => ['user_id=? and visibility_status = ?', params[:user_id], true])
        end
      else
        @galleries = Gallery.find(:all, :conditions => ['visibility_status=  ?', true])
      end
    end
end

您还可以在showeditdelete操作上对get_gallery执行类似的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/465913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档