我从显示params中的用户ID切换到params中的用户名。我可以在我的用户控制器显示操作中使用一些帮助来列出当前用户的问题。
例如用户" Monkey" ID为5.我访问他们的页面/ users / monkey。它应该仅列出该用户的所有问题。这是在将用户名添加到参数之前的工作。
我应该如何修改recipient_id: params[:id]
?
用户控制器:
def show
@user = User.find_by(username: params[:id])
@question = Question.where(recipient_id: params[:id]).page(params[:page]).per_page(3)
当前设置不会显示任何内容。如果我在show动作中指定了用户ID,例如recipient_id: 5
,它将显示该用户的问题(尽管它将在所有用户显示页面上显示相同的问题)。它不再使用params id,因为params现在包含用户名。
答案 0 :(得分:2)
为什么不使用@user.id
代替params[:id]
@user = User.find_by(username: params[:id])
@question = Question.where(recipient_id: @user.id).page(params[:page]).per_page(3)
**OR**
@question = @user.questions.page(params[:page]).per_page(3)