我正在使用Rspec为我的控制器进行功能测试.我已将路由器中的默认响应格式设置为JSON,因此每个没有后缀的请求都将返回JSON.
现在在rspec中,当我尝试时,我得到一个错误(406)
get :index
Run Code Online (Sandbox Code Playgroud)
我需要去做
get :index, :format => :json
Run Code Online (Sandbox Code Playgroud)
现在因为我主要使用我的API支持JSON,所以必须为每个请求指定JSON格式是非常多余的.
我可以以某种方式将其设置为我的所有GET请求的默认值吗?(或所有要求)
如果您有两个模型,视频和类别,并且它们之间具有"has_and_belongs_to_many"关系,那么当其中一个模型发生更改时,如何执行触摸以使缓存无效?
你不能像对待一对多关系一样"触摸"它们.现在,当我更改类别名称时,属于该类别的视频在我使缓存无效之前不知道更改.我的视图模板显示每个视频的类别名称.
我正在发送一个像这样的Rails标准电子邮件
@mail = mail(to: registration.user.email, subject: "Registration Confirmation: #{@site.name}")
Run Code Online (Sandbox Code Playgroud)
现在我需要从电子邮件中获取邮件正文(或本例中为html).我尝试了以下但它不起作用,因为它不返回渲染的电子邮件而是模板(包括ERB和Haml).
@mail.body
@mail.body.raw_source
@mail.body.encoded
Run Code Online (Sandbox Code Playgroud)
这样做似乎非常困难.我需要一个人在收到电子邮件时看到的结果.
更新
我看到的ERB和Haml是一个HTML注释,这就是为什么在日志中它看起来像ERB而不是渲染的tempalte.所以@ mail.body.encoded工作得很好.
我想用新内容更新应用程序时显示进度条.我想最好的办法就是在集合上调用.fetch时这样做.
我获取的内容主要是图像(视频海报等),但我只获得链接,而不是base64字符串或大的东西.我想要做的是在获取图像链接时使用进度条覆盖屏幕,渲染视图以使所有图像都准备就绪,然后覆盖图应该消失并显示已加载新内容的应用程序.
现在我不知道如何为此构建一个进度条,因为我不是直接获取图像而只是链接然后渲染视图.
我发送一个帖子请求到我的API工作正常,它创建一个新的记录.但是,在创建记录后,我在服务器日志中收到此错误
NoMethodError (undefined method `device_url' for #<Api::V1::DevicesController:0x007fa2f5dde5d8>):app/controllers/api/v1/devices_controller.rb:14:in `create'
Run Code Online (Sandbox Code Playgroud)
这是我的创作动作
def create
respond_with Device.create(params[:device])
end
Run Code Online (Sandbox Code Playgroud)
我的所有资源都在Api#V1下命名,这是我的路由文件
# Api ('/api')
namespace :api do
# Version 1 ('/api/v1')
namespace :v1 do
# Locations ('/api/v1/locations')
resources :locations
# Videos ('/api/v1/videos')
resources :videos
# Devices ('/api/v1/devices')
resources :devices
end
end
Run Code Online (Sandbox Code Playgroud) 我找不到有关如何将文件从外部服务或应用程序(iOS 应用程序、Go 应用程序 .. 等等)上传到使用 Active Storage 本地文件存储的 Rails REST API 的任何资源。
我能找到的所有教程都使用 HTML 表单。我想通过 POST 请求将我的文件上传到 Rails API。我不确定的主要问题是我需要在后端发送文件的标题和格式。
我在Facebook Paper应用程序中看到了这个动画/变形,当你点击它时,它们会将菜单按钮变形为X,然后返回X. 我记录它是因为我不知道如何以任何其他方式显示它.
https://www.youtube.com/watch?v=y6j_mVgv-NM
有人可以向我解释这是如何完成的吗?我想为我的应用程序.
我与Rails 5和ActionCable建立了一个简单的聊天,我有一个简单的"聊天"频道.
如何使频道订阅和消息广播动态化,以便创建聊天频道并将消息发送到正确的频道?
遗憾的是,我找不到一个代码示例.
更新
以下答案是正确的.我也发现它现在在导轨指南中提到过.在http://edgeguides.rubyonrails.org/action_cable_overview.html#client-server-interactions-subscriptions之前不要认为它在那里
由于骨干网没有办法做大多数事情,我很多东西都很困惑.其中一个是浏览我的应用程序的正确方法.
我意识到BB路由器有一个'.navigate'方法,可以用来推送网址和触发路由.现在,由于我的应用程序有多个路由器,我不确定在一个或其他路由器上调用'.navigate'之间有什么区别.
这是我的路由器
new Etaxi.Routers.System()
new Etaxi.Routers.Header()
new Etaxi.Routers.Videos()
new Etaxi.Routers.News()
Run Code Online (Sandbox Code Playgroud)
现在我能做到
router = Etaxi.Routers.System()
// or i could do
router = Etaxi.Routers.Header()
router.navigate(url)
Run Code Online (Sandbox Code Playgroud)
我用于全球应用导航的路由器有什么区别吗?这对我来说似乎很奇怪.
我有2个型号,'设备'和'DeviceActivity',其中设备有许多设备活动.现在,如果我使用常规资源嵌套,我最终会得到类似的东西
/devices/1/activities
Run Code Online (Sandbox Code Playgroud)
要么
/devices/1/activities/1
Run Code Online (Sandbox Code Playgroud)
我想要的是访问
/devices/activities
Run Code Online (Sandbox Code Playgroud)
我想要显示所有设备的所有活动,例如活动流.是否正确地在Devices资源上创建集合?
我有这样的 Rails 路线
resources :agents do
member do
post :location_wifi
end
end
Run Code Online (Sandbox Code Playgroud)
controllers/agents_controller.rb
和这样的方法
def location_wifi
puts params
puts params.permit!
end
Run Code Online (Sandbox Code Playgroud)
我使用 JSON 有效负载向该路由发送 POST 请求,例如
{ "custom": {"model": "a"} }
Run Code Online (Sandbox Code Playgroud)
当我检查参数时,我看不到我发送到任何地方的 POST 有效负载。我在这里发送的数据没有存储在数据库中,而是发送到谷歌 API,并且该结果稍后被存储。由于这个原因,我没有它的模型。
这里发生了什么?为什么我无法访问 POST 负载?
backbone.js ×2
actioncable ×1
actionmailer ×1
activerecord ×1
animation ×1
caching ×1
email ×1
ios ×1
morphing ×1
post ×1
progress-bar ×1
rest ×1
routes ×1
rspec ×1