例如:
import Component from '@/components/component'
Run Code Online (Sandbox Code Playgroud)
在我看到的代码中,它的行为类似于../相对于文件路径的目录中的一个级别,但我想更一般地了解它的作用.遗憾的是,由于符号搜索问题,我无法在线找到任何文档.
我最初使用--api标签在rails 5中创建它.
来自http://edgeguides.rubyonrails.org/api_app.html,
我删除了 config.api_only = true
我变了
class ApplicationController < ActionController::API
end
Run Code Online (Sandbox Code Playgroud)
至
class ApplicationController < ActionController::Base
end
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是视图被渲染,例如.welcome/index.html.erb,相应的CSS文件assets/stylesheets/welcome.css.scss不是.
知道如何解决这个问题,或者更一般地将API应用程序转换为完整的应用程序?
谢谢!
如何将数据从控制器传递到模型?
在我的application_controller我抓住用户的位置(州和城市)并包括一个,before_filter以使其可通过所有控制器访问
before_filter :community
def community
@city = request.location.city
@state = request.location.state
@community = @city+@state
end
Run Code Online (Sandbox Code Playgroud)
然后我尝试通过以下方法将控制器中检索到的数据添加到模型中:
before_save :add_community
def add_community
self.community = @community
end
Run Code Online (Sandbox Code Playgroud)
但是,数据从未从控制器传递到模型.如果我使用:
def add_community
@city = request.location.city
@state = request.location.state
@community = @city+@state
self.community = @community
end
Run Code Online (Sandbox Code Playgroud)
这些方法request.location.city并request.location.state不起作用于模型.我知道其他一切都在工作,因为如果我定义@city和@state作为字符串,def_community那么一切都有效,除了我没有动态变量,只是放在模型中的字符串.此外,我知道请求在控制器/视图中工作,因为我可以让它们显示正确的动态信息.问题只是将数据从控制器传递到模型.非常感谢你的时间.
ruby model-view-controller model ruby-on-rails ruby-on-rails-3
要创建订阅,我运行:
App.room = App.cable.subscriptions.create({
channel: "RoomChannel",
roomId: roomId
}, {
connected: function() {},
disconnected: function() {},
received: function(data) {
return $('#messages').append(data['message']);
},
speak: function(message, roomId) {
return this.perform('speak', {
message: message,
roomId: roomId
});
}
});
Run Code Online (Sandbox Code Playgroud)
但是因为我希望客户端永远不会订阅多个频道,所以我每次都可以在此之前运行什么来删除客户端的所有订阅?
我试着做一些超级hacky的事情:
App.cable.subscriptions['subscriptions'] = [App.cable.subscriptions['subscriptions'][1, 0]]
Run Code Online (Sandbox Code Playgroud)
但我确信它不起作用,因为有许多其他组件进入订阅/取消订阅.
App.cable.subscriptions.remove需要一个订阅参数,但我传递了什么?
谢谢!
javascript ruby-on-rails websocket ruby-on-rails-5 actioncable
tl; dr如何获取与对象键对应的值?
我很困惑为什么
Atag.where(tag:'brand') 给了我一个缺少更好用语的对象: #<ActiveRecord::Relation [#<Atag id: 1, tag: "brand", created_at: "2015-01-31 04:29:20", updated_at: "2015-01-31 04:29:20">]>
但是我很难获得键:id的相应值。
Atag.where(tag:'brand').id并且Atag.where(tag:'brand')[:id]和Atag.where(tag:'brand')(:id)所有抛出错误,而在这种情况下,我只是想有整数1返回。
我似乎无法用红宝石浏览,也无法用我的Google搜索技能(或缺乏)找到这个基本问题的简洁答案。
谢谢
例如,在10:36的https://www.youtube.com/watch?v=n0WUjGkDFS0中,他提到了创建多个频道的能力,但是如何实现这一目标?
根据Rails 5 ActionCable从URL参数建立流,可以定义变量并将其作为参数传递,如:
def subscribed
stream_from "room_channel_#{params[:roomId]}"
end
Run Code Online (Sandbox Code Playgroud)
但是在这里传递数据之前的javascript文件中,如何传递来自页面的数据?以下示例呈现错误,因为可能是在加载文档之前定义了电缆.
App.room = App.cable.subscriptions.create { channel: "RoomChannel", roomId: document.getElementById("message_text").getAttribute("data-room")}
Run Code Online (Sandbox Code Playgroud)
然后,如果一个人成功将文档中的数据传递到变量中并将其传递给stream_from方法,那么最后,右声道如何传递到广播作业中使用的perform方法?
def perform(message)
ActionCable.server.broadcast 'room_channel_???', message: render_message(message) #, roomId: roomId
end
Run Code Online (Sandbox Code Playgroud)
谢谢!
我使用puma而不是rails s工作一段时间,但随后在开发和更改代码和刷新时,刷新不起作用,延迟了很长时间.我以为它已经崩溃了什么,所以我杀死了puma服务器,但随后它说'优雅地关闭'几分钟,所以我杀死了终端窗口.然后,在我尝试使用puma它的新窗口中说主机已被占用,因此该过程仍在运行.无法找到它的位置,我重新启动了我的电脑.重启后,我现在得到错误,An unhandled lowlevel error occured. The application logs may have details.或者PG::ConnectionBad fe_sendauth: no password supplied取决于我是否运行puma或RAILS_ENV=development puma.
这些反应似乎都没有意义,而且这个错误我看到其他人都有rake db:migrate.所以我尝试迁移数据库并得到了同样的错误PG::ConnectionBad: fe_sendauth: no password supplied
在尝试运行服务器时的日志中:Rack app error: #<RuntimeError: Missingsecret_key_base for 'production' environment, set this value inconfig/secrets.yml>
现在这对我来说是最不合理的,因为为什么puma默认运行生产环境并需要特殊命令才能在开发中运行?
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)
依赖于Heroku来传递secret_key_base是我的假设,所以它不适用于开发.但后来甚至RAILS_ENV=development puma抛出
PG::ConnectionBad
fe_sendauth: no password supplied
Run Code Online (Sandbox Code Playgroud)
一条似乎对我没有帮助的痕迹:
activerecord (4.1.7) lib/active_record/connection_adapters/postgresql_adapter.rb:888:in `initialize'
activerecord (4.1.7) …Run Code Online (Sandbox Code Playgroud) 在尝试使用基本JSONEncoder序列化float3对象数组时,发现float3不符合Codable协议,因此无法完成.
我尝试按照下面的编码和解码自定义类型的建议编写一个基本扩展,但是会'self' used before all stored properties are initialized在init中为每个赋值行呈现错误.我假设这是因为编译器不确定Float.self是否在float3初始化之前定义,但我不知道如何解决这个问题.
此外,init的结尾说Return from initializer without initializing all stored properties我假设除了x,y和z之外还有float3属性,但我想知道是否有办法默认/忽略这些,和/或如何找到完整除了挖掘simd中的所有float3扩展之外的属性列表.
如果您对如何做到这一点有任何想法,那么分享它们将非常感激.谢谢!
import SceneKit
extension float3: Codable {
public init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
x = try values.decode(Float.self, forKey: .x)
y = try values.decode(Float.self, forKey: .y)
z = try values.decode(Float.self, forKey: .z)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(x, forKey: .x)
try …Run Code Online (Sandbox Code Playgroud) $ rails
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:777:in `report_activate_error': RubyGem version error: rack(1.4.0 not ~> 1.3.5) (Gem::LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:211:in `activate'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:246:in `activate'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:245:in `each'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:245:in `activate'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:246:in `activate'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:245:in `each'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:245:in `activate'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:1056:in `gem'
from /usr/bin/rails:18
Run Code Online (Sandbox Code Playgroud)
然后我试试这个:
$ sudo gem install rack 1.3.5
密码:
成功安装了机架1.4.0
错误:无法在本地或存储库中找到gem 1.3.5
安装1个宝石
安装rack-1.4.0的ri文档...
无法读取termcap数据库;
使用哑终端设置.
安装rack-1.4.0的RDoc文档...
然后再次但不同:
rails
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:230:in `activate': can't activate rack (~> 1.3.5, runtime) for ["actionpack-3.1.3", "rails-3.1.3"], already activated rack-1.4.0 for ["rack-cache-1.1", "actionpack-3.1.3", "rails-3.1.3"] (Gem::LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:246:in `activate'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:245:in …Run Code Online (Sandbox Code Playgroud) 如果您想在列表中获取重复项而不是 uniq 值,您将如何在使用模式匹配的快速、密集脚本中执行此操作?
例如,输入["ash", "bob", "cat", "bob", "ash"]如何获得["ash", "bob"]?
javascript ×3
actioncable ×2
ruby ×2
activerecord ×1
codable ×1
elixir ×1
gem ×1
heroku ×1
install ×1
model ×1
postgresql ×1
puma ×1
rack ×1
rails-api ×1
reduce ×1
scenekit ×1
swift ×1
swift4 ×1
websocket ×1