我正在构建一个应用程序,供用户发布。每篇文章都有一个upvoted和downvoted。在显示帖子的位置,我有一个允许用户过滤帖子的小表格。它只是传递一个参数给名为params [:post_filter](localhost:3000/somepage?post_filter = value)的url。现在,这工作得很好,除了我写的修改查询的私有方法无效。控制器私有方法不起作用
这里是我的查询:
def room
@posts = Post.where('lesson_id = ?', params[:id]).order(post_filter_params).page(params[:page]).per(30)
end
,这里是我的私有方法:
private
def post_filter_params
chosen_option = params[:post_filter].to_i == 1 or 2 or 3 ? params[:post_filter] : '1'
case chosen_option
when 1
'created_at DESC'
when 2
'upvotes DESC'
when 3
'downvotes DESC'
end
end
现在,每当我代替我的私有方法与字符串之一的.order()值,一切都按计划进行。但是,在.order()值中放置私有方法名称不起作用。对发生了什么的任何想法?
编辑
,以确保所有值都相同的数据类型我这样做,但它仍然不能正常工作:
def post_filter_params
param_option = params[:post_filter].to_i
chosen_option = param_option == 1 or 2 or 3 ? param_option : 1
case chosen_option
when 1
'created_at DESC'
when 2
'(upvotes - downvotes) DESC'
when 3
'downvotes DESC'
end
end
那么,你的代码工作,但私人不是问题。我很感谢你,先生。 http://i.imgur.com/cHapI.jpg – flyingarmadillo 2012-08-15 12:00:29
对不起,这不是我的意思。我指的是'selected_option = param_option == 1或2或3? param_option:1'行。 – 2012-08-15 12:01:45