Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道4-x27;找不到没有ID的用户_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 轨道4-x27;找不到没有ID的用户

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

我是rails的新手,因此任何解释和建议都将不胜感激

  • 我有一个网页,我希望任何
    用户
    都能查看该网页,不仅是
    当前用户
    ,而且我不确定如何在我的控制器中正确定义实例变量
    @user
  • 在我的
    static\u pages\u controller.rb中,我有以下操作
    recruiterpg
静态页面控制器.rb

  def recruiterpg
    @user = User.find(params[:user_id])
    @adverts = @user.adverts
    @applications = @user.forms
  end
  • 在我的控制器中,我将
    user
    定义为
    @user=user.find(params[:user_id])
    ,但这会破坏视图中的代码<代码>视图/静态页面/recruiterpg.html.erb

  • 当我将
    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