编辑:错误是即使在按下link_to之后,feed_preference总是为零,因此(如果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什么都不做。
答案 0 :(得分:0)
你说它什么都没做?表格甚至没有发布?
如果它根本没有张贴...你在表格中有你的link_to吗?如果你使用post方法,你必须在表单中使用它,除非你使用的是像使用jQuery / Javascript来帮助你进行'post'操作的ujs jQuery库。
使用gem:gem'jquery-rails' https://github.com/indirect/jquery-rails
我也希望看到你的'rake routes'