gpt4 book ai didi

ruby - NoMethodError,在sinatra中调用属性

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:21 28 4
gpt4 key购买 nike

我有一个正在编写的 sinatra 应用程序。我正在尝试编写一个页面来显示存储在数据库中的各个模式。使用 datamapper 我创建了一个类:

require 'dm-core'
require 'dm-migrations'

DataMapper.setup(:default, "sqlite://#{Dir.pwd}/development.db")

class Pattern
include DataMapper::Resource
property :id, Serial
property :patt, String
property :sentence, String
property :descript, Text
end

DataMapper.finalize

处理/pattern/:id 的路由是...

get '/pattern/:id' do
@patts = Pattern.get(params[:id])
erb :pattern
end

在我的 pattern.erb 文件中...

<div class="span10">
<h2><%= @patts.patt %></h2>
<p>Example: <%= @patts.sentence % @patts.patt %><p>
<p>Description: <%= @patts.descript %></p>
</div>

我得到的错误是...

NoMethodError at /pattern/1
undefined method `patt' for nil:NilClass
file: pattern.erb location: block in singleton class line: 6

我没有做或做错了什么?

最佳答案

无论出于何种原因,@patts = Pattern.get(params[:id]) 都会给您 nil您传递的 id 很可能与现有模式 ID 不匹配(因为要么没有模式,要么您输入的 url 有误)。无论出于何种原因,您都需要按照以下方式处理:

if @patt
# Your code
else
'No pattern by that id' # or something similar.
end

在您的 Controller 或您的 .erb 中。

关于ruby - NoMethodError,在sinatra中调用属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16887559/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com