【问题标题】:Sinatra cannot find file that is clearly thereSinatra 找不到明显存在的文件
【发布时间】:2016-08-30 21:34:51
【问题描述】:

我不知道该怎么办。它在包含erb :RUSure 的行上给我这个错误我不明白为什么这与我使用erb :whateverFileName 的任何其他行不同这不是它在不同的目录中,因为它在同一个目录中目录。

我的错误:

2015-05-30T21:50:59.901059+00:00 app[web.1]: 2015-05-30 21:50:59 - Errno::ENOENT - No such file or directory @ rb_sysopen - /app/views/RUSure.erb:

如果这有帮助,我的树:

.
├── Gemfile
├── Gemfile.lock
├── Procfile
├── Rakefile
├── app.rb
├── db
│   ├── migrate
│   │   └── 20150527124739_establish_all.rb
│   └── schema.rb
├── models.rb
└── views
    ├── RUSure.erb
    ├── changePassword.erb
    ├── createQuiz.erb
    ├── deleteStu.erb
    ├── displayAns.erb
    ├── editDB.erb
    ├── error.erb
    ├── getQN.erb
    ├── home.erb
    ├── layout.erb
    ├── noneFound.erb
    ├── select.erb
    ├── setPass.erb
    ├── sucess.erb
    └── test.erb

这是引发错误的部分:

post '/adminRUSureDelete' do
    admin_check
    @name = params[:name]
    @year = params[:year]
    @band = params[:band]
    if @name == "" and @year == "" and @band == "" then
        var = nil
    elsif @name == "" and @year == "" then
        var = Student.where(band:@band)
    elsif @year == "" and @band == "" then
        var = Student.where(name:@name)
    elsif @name == "" and @band == "" then
        var = Student.where(year:@year)
    elsif @name == "" then
        var = Student.where(year:@year,band:@band)
    elsif @year == "" then
        var = Student.where(band:@band,name:@name)
    elsif @band == "" then
        var = Student.where(year:@year,name:@name)
    else
        var = Student.where(year:@year,name:@name,band:@band)
    end
    if var == nil then
        erb :noneFound
    else
        var.each do |i|
            @list = "#{@list}<p>#{i.name}</p>"
        end
        var.each do |i|
            @send = "#{@send},#{i.id}"
        end
        erb :RUSure # THIS IS THE LINE WHERE IT GIVES ME THE ERROR.
        # It works if any of the other if statements are triggered, but just not here.
    end
end

我愿意添加任何有用的信息。

【问题讨论】:

  • 我想到了几件事:(1)文件名有大写字符,检查文件名和代码中的名称是否有相同的大小写; (2) 既然你已经标记了 Heroku,请检查该文件是否已提交到 git 并推送到 Heroku。
  • 已经提交到git并推送到heroku。我知道它在heroku 中,因为当我输入heroku run bash 然后cd 到views 文件夹,然后输入ls,它显示该文件在那里。至于案例,我现在正在检查。
  • 你是对的,是erb文件名的情况。如果您只是提出答案,我会将其作为接受的答案。非常感谢!

标签: ruby heroku sinatra


【解决方案1】:

文件使用大写字符。确保文件名和代码中的名称匹配以防万一。如果文件名真的是例如RUsure.erb 那么您的代码将无法运行。

【讨论】:

    【解决方案2】:

    它似乎正在寻找以 /app 开头的绝对路径。您可能需要确保将其用作相对路径或将 Rails.root 附加到文件路径。

    【讨论】:

    • 两件事,1)我没有使用 rails,2)我在其他任何地方使用 erb :nameOfErbFile 它工作得很好。只有在这个地方会引发错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多