gpt4 book ai didi

ruby-on-rails - Rails 3 - 表单验证 - 将逻辑移动到回调或观察者?

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:45 24 4
gpt4 key购买 nike

大家好,我在过去几天的工作中遇到了验证问题,但没有成功。我所拥有的是我有一个需要用户输入 URL 的模型。我在我的模型中使用以下内容完成了此操作:

validates :url, :presence => true  

当用户提交他们的表单时,我获取他们的 URL 并使用 Nokogiri 打开它以提取网页标题等基本内容。我目前正在使用 Controller 中的 Create 方法执行此操作。代码如下所示:

def create
require 'open-uri'
@page = Page.new(params[:page])

doc = Nokogiri::HTML(open(@page.url))

我遇到的问题是,如果用户输入空白表单,Nokogiri 会在运行时出错,即使我已尝试验证该表单。

我的问题是,我应该将这种逻辑转移到回调还是观察者?我是 Rails 的新手,但我可以通过回调/观察者处理我的数据/实例变量吗?我只是使用 @page 失败了,但想知道是否有一种方法可以将它传递给回调/观察者,如果这是应该放置这种逻辑的地方吗?

谢谢

最佳答案

最好将其放入模型中。

Controller 方法做类似的事情

def create
@page = Page.new(params[:page])
respond_with @page
end

在你的模型中

class Page < ActiveRecord::Base
...
before_save :pull_info_from_url

def pull_info_from_url
doc = Nokogiri::HTML(open(self.url))
...
end
end

before_save 回调在验证后运行,因此如果存在检查失败,则不会执行此代码,而是显示有错误的表单。

关于ruby-on-rails - Rails 3 - 表单验证 - 将逻辑移动到回调或观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4661014/

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