Ruby on rails 轨道4-x27;找不到没有ID的用户
我是rails的新手,因此任何解释和建议都将不胜感激Ruby on rails 轨道4-x27;找不到没有ID的用户,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我是rails的新手,因此任何解释和建议都将不胜感激 我有一个网页,我希望任何用户都能查看该网页,不仅是当前用户,而且我不确定如何在我的控制器中正确定义实例变量@user 在我的static\u pages\u controller.rb中,我有以下操作recruiterpg 静态页面控制器.rb def recruiterpg @user = User.find(params[:user_id]) @adverts = @user.adverts @applic
- 我有一个网页,我希望任何
都能查看该网页,不仅是用户
,而且我不确定如何在我的控制器中正确定义实例变量当前用户
@user
- 在我的
static\u pages\u controller.rb中,我有以下操作
recruiterpg
def recruiterpg
@user = User.find(params[:user_id])
@adverts = @user.adverts
@applications = @user.forms
end
- 在我的控制器中,我将
定义为user
,但这会破坏视图中的代码<代码>视图/静态页面/recruiterpg.html.erb@user=user.find(params[:user_id])
- 当我将
定义为user
时,我在视图中的代码工作得非常好@user=current\u user
recruiterpg.html.erb
,我希望
任何用户
都可以查看页面,而不仅仅是当前用户
可以
查看页面。能不能请你给我一个建议,并向我解释一下怎么做
在我的状态页面\u controller.rb中正确定义@user
。我也
尝试了@user=user.find(params[:id])
,但我的代码在
视图-我收到错误消息
您需要确保您正在将用户id传递给recruiterpg操作。例如,在浏览器中尝试此url(在用户
表中将用户id设置为已知id):
建议修改您的操作:
def recruiterpg
@user = User.find params.require(:user_id)
@adverts = @user.adverts
@applications = @user.forms
end
如果未定义params[:user_id],则需要找到一种方法使所定义的内容可见
如果将以下语句放入控制器中
def recruiterpg
...
puts params
...
end
…加载页面时,您应该会在控制台中看到如下内容
{"controller"=>"static_pages", "action"=>"recruiterpg", "id"=>"49"}
查看Rails指南中的参数。它们可以用三种方式中的一种来定义
第一:作为查询字符串,类似于上面Sean的答案
两个:路由参数。参见导轨指南中的第4.3节。在您的情况下,这意味着您在routes.rb中应该有如下内容:
get '/dashboard/:user_id' => 'staticpages#recruiterpg'
请注意,该字符串中的:user_id
没有什么神奇之处
三:来自一个表单,它似乎不适用于这里,因为用户没有提交数据。因为您是新来的,这里有一些信息给您:
用户故事
首先,解决错误的最佳方法是识别您的错误
“用户故事”是一种软件原则,在这一原则中,您将“用户的视角”放在首位——解释软件应如何在用户如何参与定义的条件下工作
你的问题的一个主要问题是你的用户故事非常薄弱;很难判断你想要达到什么目标
下次您提出问题时,在提供代码片段之前,应该尽最大努力描述用户应该如何看待您的应用:)
控制器
你的主要问题是一个问题
反模式基本上是一种“黑客”,它可能会在将来破坏应用程序的另一部分。类似于用于软件的管道胶带):
您是否有user\u id
param?def user\u params.require(:user).permit(:email,:firstname,:lastname,:companyname,:number,:hear,:image,:link,:jobttitle,:staffnumber,:company\u id,:category\u hear\u id,:status)end
我似乎没有用户id参数
-那么我可以将用户定义为@user=user.find(params[:id])
?招聘人员的链接和路线是什么样子的?你说的“有一个网页,我希望任何用户都能在其中查看该网页,而不仅仅是当前的用户”是什么意思查看给定页面的任何用户都是当前用户,因为当前用户是一个完全相对的值。路由:get'dashboard',to:'static\u pages#recruiterpg'
get '/dashboard/:user_id' => 'staticpages#recruiterpg'
#app/controllers/static_pages_controller.rb
class StaticPagesController < ApplicationController
def recruiterpg
@user = User.find(params[:user_id])
@adverts = @user.adverts
@applications = @user.forms
end
end
#config/routes.rb
resources :users do
resources :recruiters, only: :index #-> url.com/users/:user_id/recruiters
end
#app/controllers/recruiters_controller.rb
class RecruitersController < ApplicationController
def index
@user = User.find params[:user_id]
@adverts = @user.adverts
@applications = @user.forms
end
end
#app/views/recruiters/index.html.erb
<%= @adverts %>
#config/routes.rb
resources :users do
resources :recruiters #-> url.com/users/:user_id/recruiters
end