Ruby on rails url_for在控制台和控制器中提供不同的输出-Rails 5
我正试图让我的Rails 5应用程序在使用创建新插件时发出tweet。在tweet中,我想发布新插件的url。因此,我在控制器中添加了以下内容:Ruby on rails url_for在控制台和控制器中提供不同的输出-Rails 5,ruby-on-rails,url,rails-console,url-for,Ruby On Rails,Url,Rails Console,Url For,我正试图让我的Rails 5应用程序在使用创建新插件时发出tweet。在tweet中,我想发布新插件的url。因此,我在控制器中添加了以下内容: class PluginsController < ApplicationController include Rails.application.routes.url_helpers def create @plugin = current_user.plugins.build(plugin_params) $cli
class PluginsController < ApplicationController
include Rails.application.routes.url_helpers
def create
@plugin = current_user.plugins.build(plugin_params)
$client.update("#{url_for(@plugin)}")
end
end
为什么我的控制器和控制台中的输出不一样?看起来,在您的控制器中,您实际上还没有保存插件。这意味着它没有id,因此rails无法完全生成url
build
使用参数创建一个新的插件对象,但不保存它。您需要添加@plugin.save
或@plugin.save
保存它,或者您可以使用当前用户.plugins.create(plugin\u参数)
我希望在您的控制台中,您创建或获取插件的方式有所不同,这就是为什么您会看到不同的行为
可以说,在这一点上给你一个错误会更有帮助,但从技术上讲,你也会发布一个新插件,这就是为什么它会这样做。嗨,我把它改为
current_user.plugins.create(plugin_params)
,它成功了,非常感谢!
2.5.7 :009 > include Rails.application.routes.url_helpers
=> Object
2.5.7 :010 > url_for(@plugin)
=> "http://localhost:3000/plugins/does-this-work"