gpt4 book ai didi

ruby - 如何在模型中调用重定向方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:52:40 25 4
gpt4 key购买 nike

我想写这样的代码

require 'sinatra'

class MyModel
def edit(request)
# ...
updateOK = true
redirect '/article_view' if updateOK

:article_edit
end
end

get '/article_view' do erb :article_view end
get '/article_edit' do erb :article_edit end

post '/article_edit' do
model = MyModel.new
erb model.edit(request)
end

但它不起作用,它提示:undefined method `redirect' for #

有什么方法可以在我的自定义模型中调用重定向方法吗?


哈哈,我知道如何使代码工作,尽管它写错了。

require 'sinatra'

class MyModel
def edit(context)
# ...
updateOK = true
context.redirect '/article_view' if updateOK

:article_edit
end
end

get '/' do erb :index end
get '/article_view' do erb :article_view end
get '/article_edit' do erb :article_edit end

post '/article_edit' do
model = MyModel.new
erb model.edit(self)
end

最佳答案

不要。该模型不负责路由或重定向。

此外,您的发帖路线看起来很乏味。您正在向它发送 POST 数据,然后将其传递给模型。模型已创建并保存。您可以将这两个分开,如果 model.save 方法返回 true,您将重定向。

post '/model/new' do
model = Model.new params
redirect to("/model/#{model.id}") if model.save
end

不是每个人都喜欢将参数转发给模型,所以也要小心。

对于编辑,您通常会使用 PUT 方法,因为您知道模型地址。因此,请注意不要将它们混淆(除非您知道自己在做什么)这会为您省去很多思考。

关于ruby - 如何在模型中调用重定向方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9014755/

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