Rails 3:对“索引”使用link_to:action不起作用

时间:2011-08-31 23:39:27

标签: ruby-on-rails ruby ruby-on-rails-3

编辑:错误是即使在按下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什么都不做。

1 个答案:

答案 0 :(得分:0)

你说它什么都没做?表格甚至没有发布?

如果它根本没有张贴...你在表格中有你的link_to吗?如果你使用post方法,你必须在表单中使用它,除非你使用的是像使用jQuery / Javascript来帮助你进行'post'操作的ujs jQuery库。

使用gem:gem'jquery-rails' https://github.com/indirect/jquery-rails

我也希望看到你的'rake routes'