link_to调用的函数即使在硬编码时也不起作用

时间:2011-09-01 00:02:14

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

出于某种原因,在我的函数make_feed_preference中,@user.feed_preference永远不会更改,即使我将其硬编码到@user.feed_preference = "foobar",但看起来redirect_to 'posts'工作正常。

即使在按下feed_preference之后,nil仍然是link_to,因此(if feed_preference == nil)始终为true。我仍然不知道造成这种情况的原因。

make_feed_preference存储在users_controller中。它的作用是显示新闻源,但根据偏好值排序(例如“时间”,“趋势值”,“粉丝”)

<%= 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

注意:我通过将新类附加到用户来修复它。

1 个答案:

答案 0 :(得分:0)

我会在这里使用条件:

redirect_to '/posts', :notice => if @user.save
    'You have updated your feed preference.'
else
    'Your input was invalid.'
end

您会发现@user验证可能失败。