【问题标题】:how to pass id in controller如何在控制器中传递id
【发布时间】:2013-12-05 14:43:37
【问题描述】:

我有这个错误。我正在使用来自 railscast 视频的 Omniauth-identity 和 Omniauth-FB TWITTER 的用户。

No route matches [GET] "/users/generators/new"

当我点击时

<%= link_to 'GENERATE RAPD PRIMER',new_user_generator_path(@user), id:'new' %></li>

这条路由在 rake 路由中的作用是

new_user_generator GET    /users/:user_id/generators/new(.:format)      generators#new

当我点击时

<%= link_to 'GENERATE RAPD PRIMER',user_generator_results_path(@user), id:'new' %></li>

我的网址返回

http://localhost:3000/users//generators/new

该 URL 中没有 id 返回。怎么会 ???我该如何解决?我正在使用有关 Omniauth FB 和 Identity for User 模型的 railscast 教程。我正在尝试将 User 与生成器相关联。

【问题讨论】:

  • 您的路线指定new_user_generator,而您使用的是user_generator_results..为什么??
  • 哎呀抱歉应该是 new_user_generator_path(@user)。但我仍然收到错误

标签: ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1 ruby-on-rails-4


【解决方案1】:

确保按照路由传递user_id 参数:

new_user_generator_path(user_id: @user.id)

【讨论】:

  • 因为@user 为零
  • 但我已经登录了我的程序。我需要用户控制器来解决这个问题吗?目前我看不到我的登录名与用户之间的任何链接。我试过 Rails 控制台(User.all)有一个 user_id 等)。我认为问题发生是因为没有用户控制器来传递 id。我正在关注有关omniauth-fb 和omniauth-identity 的railscast 教程
  • 您需要将用户对象分配给@user。例如:@user = User.first。可能在控制器中。
  • 我确实在应用程序控制器中分配了这个 def current_user current_user ||= User.find(session[:user_id]) if session[:user_id] end
  • 现在可以工作了
猜你喜欢
  • 1970-01-01
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 2013-12-22
  • 2021-09-27
  • 2020-06-01
相关资源
最近更新 更多