我想将我的项目分解为子文件夹.
我想要这个代码结构:
??? main.go
??? models
??? user.go
Run Code Online (Sandbox Code Playgroud)
main.go是:
package main
import (
"fmt"
"./models"
)
func main(){
fmt.Println(User{"new_user"})
}
Run Code Online (Sandbox Code Playgroud)
而user.go是:
package models
type User struct {
Login string
}
Run Code Online (Sandbox Code Playgroud)
但是主程序包中没有定义用户,导入引发警告"导入但未使用".
我究竟做错了什么?我的项目很简单(不是这样的例子,只是文件很少(控制器和模型)),我想要一个简单的结构.
也许我是以完全错误的方式做到的?
我绑定到一个链接(通过使用.live()jQuery 的函数)click事件,然后手动添加一个onclick纯JS和HTML(如<a href="".... onclick="some action">)的事件处理程序.我想防止事件冒泡到live方法,但我不知道如何.
也许e.stopPropagation()在这种情况下是有用的,但添加的事件处理程序onclick是用纯JS编写的,我无法stopPropagation()从外部调用jQuery元素包装器.return false在这种情况下不起作用.我试图替换return false,$.Event('click').stopPropagation()但我认为这是错误的,因为它不起作用.
如何在live()没有jQuery包装器的情况下防止冒泡到方法?
我认为ruby只是调用方法to_s但我无法解释它是如何工作的:
class Fake
def to_s
self
end
end
"#{Fake.new}"
Run Code Online (Sandbox Code Playgroud)
根据逻辑,由于无穷大递归,这应该将堆栈级别提升得太深.但它工作正常,似乎从一个对象调用#to_s.
=> "#<Fake:0x137029f8>"
Run Code Online (Sandbox Code Playgroud)
但为什么?
添加:
class Fake
def to_s
Fake2.new
end
end
class Fake2
def to_s
"Fake2#to_s"
end
end
Run Code Online (Sandbox Code Playgroud)
此代码在两种情况下的工作方式不同
puts "#{Fake.new}" => "#<Fake:0x137d5ac4>"
Run Code Online (Sandbox Code Playgroud)
但:
puts Fake.new.to_s => "Fake2#to_s"
Run Code Online (Sandbox Code Playgroud)
我认为这是不正常的.有人建议在ruby解释器中它发生在内部吗?
我有一个rails控制器,在这里定义:
https://github.com/abonec/Simple-Store/blob/master/app/controllers/carts_controller.rb
在购物车页面上,用户可以通过发布嵌套属性来指定line_items的数量.参数如下所示:
{ "cart" => {
"line_items_attributes" => {
"0" => {
"quantity" => "2",
"id" => "36" } } },
"commit" => "Update Cart",
"authenticity_token" => "UdtQ+lchSKaHHkN2E1bEX00KcdGIekGjzGKgKfH05So=",
"utf8"=>"\342\234\223" }
Run Code Online (Sandbox Code Playgroud)
在我的控制器动作中,这些参数保存如下:
@cart.update_attributes(params[:cart])
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在测试中测试这种行为.@cart.attributes仅生成模型属性而不是嵌套属性.
我该如何测试这种行为?如何在我的功能测试中使用嵌套属性模拟post请求?
我使用polimorphic_path并且它有些马车.此方法需要一些未定义的路由助手.我如何定义(像常规方法)自己的路由助手将使用像"model_name_path,model_name_url等"?
在ruby methaprogramming中,我们在多行字符串中有特殊类型的注释,这些注释将被评估.它们看起来像这样:https://github.com/rails/rails/blob/8775ffa37231d381cba34f0ecacb8a7bbcf0573f/activesupport/lib/active_support/memoizable.rb#L77
这个字符串在两部分上逐行划分:带有插值的字符串,将在左侧进行评估,代码示例在右侧.手动输入此评论是一项艰苦的工作.它需要许多手动缩进.
在vim中是否有一些插件或工具可以帮助编写这种类型的注释?
我编写了一个下载图像的服务,通过 zip 存档加入它并将其上传回 aws。这项服务应该是省时的。我的第一个版本非常简单:
但我认为所有这些从磁盘操作中保存和读取的性能都低于内存通信。
我一起加入了下载和存档(所有下载阅读器都直接进入存档器)。但我不明白如何与上传者一起加入。
S3 上传器需要一个ReadSeeker来放置对象。归档器的当前实现是:
func Archive(inputQueue <-chan Input) io.ReadSeeker {
zipFile, err := os.Create("test_arch.zip")
if log.Error(err) {
os.Exit(1)
}
arch := zip.NewWriter(zipFile)
go func() {
defer arch.Close()
for input := range inputQueue {
header := &zip.FileHeader{
Name: filepath.Join(baseDir, input.Path()),
Method: zip.Store,
}
writer, err := arch.CreateHeader(header)
if log.Error(err){
os.Exit(1)
}
_, err = io.Copy(writer, input.Reader())
}
}()
return zipFile
}
Run Code Online (Sandbox Code Playgroud)
它将存档保存到磁盘。如何写archihve到中间结构通过这种结构,S3上传的是需要一个ReadSeeker?