【发布时间】:2011-08-31 23:39:26
【问题描述】:
编辑:错误是即使在按下 link_to 之后 feed_preference 始终为 nil,所以 (if feed_preference == nil) 始终为 true。我还是不知道是什么原因造成的。
这个link_to应该做什么:
当您点击链接时,它会以某种方式对帖子索引进行排序。一个按钮按趋势值排序,另一个按时间排序。
出于某种原因,在函数“make_feed_preference”中,@user.feed_preference 永远不会改变,即使我将其硬编码为 @user.feed_preference = “foobar”
但看起来 redirect_to 'posts' 工作正常。
<%= link_to displayIcon(1), {:action => :make_feed_preference, :id => current_user.id,
:preference => "trending value", :controller => "users"}, :method=>:post %>
在用户控制器中:
def make_feed_preference
@user = User.find(params[:id])
@user.feed_preference = params[:preference]
@user.save
redirect_to '/posts'
end
在帖子索引的视图中:
def index
@user = current_user
if @user.feed_preference == nil
@user.feed_preference = "trending value"
end
@posts = Post
unless @user.tag_list == []
@posts = Post.tagged_with(@user.tag_list, :match_all => :true)
end
if @user.feed_preference == "trending value"
@posts = @posts.order('trending_value DESC').page(params[:page]).per(5)
elsif @user.feed_preference == "time"
@posts = @posts.order('created_at DESC').page(params[:page]).per(5)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
end
end
Routes.rb
resources :users do
resources :comments
resources :posts
member do
get :following, :followers
end
collection do
post "tag_with"
post "clear_tag_list_and_preferences"
post "make_feed_preference"
end
end
每当我检查值时,就好像单击 link_to 什么都不做。
【问题讨论】:
-
你也可以试试 :make_feed_preference, :id => current_user.id, :preference => "trending value"} %>
-
说真的,@Jon,你今天创建了多少份这个问题?
标签: ruby-on-rails ruby ruby-on-rails-3