您好我正在尝试验证nested_attributes
,拒绝以正确的网址格式
这是我的reject_if
代码:
accepts_nested_attributes_for :campaign_posts, :allow_destroy => true,
:reject_if => :bad_uri
def bad_uri(attribute)
attribute['post'] =~ URI::regexp(%w(http https))
end
但是当我测试时,它并没有拒绝糟糕的输入......
我的update
campaigns_controller.rb
行动仍在继续
造成这种错误:
URI::InvalidURIError (bad URI(is not URI?): ):
app/controllers/campaigns_controller.rb:72:in `set_desc_provider_name'
app/controllers/campaigns_controller.rb:155:in `block (2 levels) in update'
app/controllers/campaigns_controller.rb:144:in `block in update'
app/controllers/campaigns_controller.rb:142:in `update'
这只意味着拒绝运行不顺利。
PS:我有2个模型Campaign和Campaign Post
更新
如果URI不是URI,它在我的控制器中失败:
def get_parsed_data(p)
# Parse URL
provider = "http://api.embed.ly/1/oembed?url="
url = (p.post).to_s
resp = Net::HTTP.get_response(URI.parse(provider + url))
data = resp.body
@result = JSON.parse(data)
end
而且,我尝试将条件更改为!=
,但它也不接受URL输入。它不接受非网址和网址
def bad_uri(attribute)
attribute['post'] != URI::regexp(%w(http https))
end