我刚开始使用Elixir,并开始了一个凤凰项目,我非常喜欢.现在有了rails后台,我习惯于被调试工具所破坏,比如"debugger","byebug"等等; 我想知道Elixir是否有类似的工具?你们是如何调试Elixir应用程序的?
甚至相当于Rubys raise my_object.inspect,也会有奇迹!
谢谢
我试图将我的数据库对象传递给我的处理程序,而不是拥有一个全局对象.但我不知道这是否可行,我正在使用Gorilla Mux包,我可以看到它需要一个封闭作为第二个参数.
// https://github.com/gorilla/mux/blob/master/mux.go#L174
// HandleFunc registers a new route with a matcher for the URL path.
// See Route.Path() and Route.HandlerFunc().
func (r *Router) HandleFunc(path string, f func(http.ResponseWriter,
*http.Request)) *Route {
return r.NewRoute().Path(path).HandlerFunc(f)
}
Run Code Online (Sandbox Code Playgroud)
然后定义了我可以使用的参数,理想情况下我希望有这样的第三个参数.
// In my main
router.HandleFunc("/users/{id}", showUserHandler).Methods("GET")
func showUserHandler(w http.ResponseWriter, r *http.Request, db *gorm.DB) {
fmt.Fprintf(w, "We should fetch the user with id %s", vars["id"])
}
Run Code Online (Sandbox Code Playgroud)
有解决方法吗?或者我需要一个全局数据库对象?我是Go的新手,所以请详细解释一个可能的答案.
我正在研究价格格式函数,它采用浮点数并正确表示.
恩.190.5,应该是190,50
这就是我提出的
def format_price(price) do
price
|> to_string
|> String.replace ".", ","
|> String.replace ~r/,(\d)$/, ",\\1 0"
|> String.replace " ", ""
end
Run Code Online (Sandbox Code Playgroud)
如果我运行以下.
format_price(299.0)
# -> 299,0
Run Code Online (Sandbox Code Playgroud)
看起来它只是通过第一次更换.现在,如果我将此更改为以下内容.
def format_price(price) do
formatted = price
|> to_string
|> String.replace ".", ","
formatted = formatted
|> String.replace ~r/,(\d)$/, ",\\1 0"
formatted = formatted
|> String.replace " ", ""
end
Run Code Online (Sandbox Code Playgroud)
然后一切似乎都很好.
format_price(299.0)
# -> 299,00
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
我正在研究一个模型的crud部分,我已经添加了图像支持.理想情况下,如果您正在编辑模型,我想显示图像,我会这样做.
<%= Logo.url({@company.logo, @company}, :thumb) %>
Run Code Online (Sandbox Code Playgroud)
问题是公司变量仅在编辑操作中可用,因为新操作上还有公司,所以我需要检查@company是否已设置.
<%= unless @company do %>
<%= Logo.url({@company.logo, @company}, :thumb) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
问题是,这会产生以下错误.
"分配@company在eex模板中不可用.可用分配:[:action,:changeset]"
我尝试使用is_nil,但同样的错误.
我试图使用切片从我的数组中删除一个元素,但我无法让它工作,看看这段代码.
console.log(this.activeEffects); // Prints my array
console.log(this.activeEffects.slice(0,1)); // Remove from index 0, and remove one.
console.log(this.activeEffects); // Prints array again, this time my element should be gone
Run Code Online (Sandbox Code Playgroud)
结果是.

所以从中得到的是,首先阵列是完整的,应该是它.然后它打印出切片的数组.最后第三个应该是空的?要么?
我今天刚刚开始使用Elixir和Phoenix,我试图将Ecto添加为映射器,但是我在使用时间时遇到了一些麻烦.
这是我的模特.
schema "users" do
field :name, :string
field :email, :string
field :created_at, :datetime, default: Ecto.DateTime.local
field :updated_at, :datetime, default: Ecto.DateTime.local
end
Run Code Online (Sandbox Code Playgroud)
我试图在默认情况下设置created_at和updated_at,但是当我尝试编译它时,我收到以下错误.
== Compilation error on file web/models/user.ex ==
** (ArgumentError) invalid default argument `%Ecto.DateTime{day: 13, hour: 19, min: 47, month: 2, sec: 12, year: 2015}` for `:datetime`
lib/ecto/schema.ex:687: Ecto.Schema.check_default!/2
lib/ecto/schema.ex:522: Ecto.Schema.__field__/4
web/models/board.ex:9: (module)
(stdlib) erl_eval.erl:657: :erl_eval.do_apply/6
Run Code Online (Sandbox Code Playgroud)
获取文档没有太大帮助,这样做的正确方法是什么?
我正在尝试将我的地图解析为json字符串,我将如何使用毒药?
我尝试了以下内容.
iex(19)> test = %{"api_key" => "sklfjklasfj"}
%{"api_key" => "sklfjklasfj"}
iex(20)> Poison.Encoder.encode(test, [])
[123, [[34, ["api_key"], 34], 58, [34, ["sklfjklasfj"], 34]], 125]
Run Code Online (Sandbox Code Playgroud)
我期待的是
"{"api_key": "sklfjklasfj"}"
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中添加了一些图形,尺寸指向Retina显示屏.
我没有注释
// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
if( ! [director enableRetinaDisplay:YES] )
CCLOG(@"Retina Display Not supported");
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的程序时,我得到"不支持Retina显示",我正在使用iPhone 4.3模拟器
我该怎么做才能运行Retina显示屏,以便我可以测试我的图形.
谢谢
我目前正在使用Backbone.js构建一个网站.该站点有一个使用FOSRestBundle在Symfony中构建的RESTful API.开发进展顺利,直到我偶然发现了一些与用户相关的门票.
据我所知,处理此类问题的最佳方法是使用基于令牌的系统,用户在批准登录后获取访问令牌.我将描述我目前对工作流程的看法,并在此过程中提出问题.更重要的是,如果我误解了,请纠正我.
首先,用户访问登录表单,然后用户输入凭证,并将AJAX请求发送到服务器.根据我的理解,这应该全部用SSL处理,但是使用Backbonejs,你不能简单地说应该使用HTTPS访问登录页面,因为Backbone是一个单页框架.那么这会迫使我在应用程序中使用HTTPS吗?
在下一步中,REST服务器验证凭据,并且它们被批准,然后REST服务器将访问令牌发送到客户端.此令牌是在本地存储还是cookie中保存(在客户端)?
也是存储在服务器上的登录,以便REST服务器可以在一定时间后将用户注销?
现在,客户端发送此访问令牌以及其他请求,以便服务器可以识别客户端,并批准请求.那么访问令牌也存储在REST服务器上?
最后,智能人士称之为"oauth",还是与之相关?
谢谢.
我正在开发一个由EmberJS前端组成的应用程序,它通过REST与Rails服务器通信.在我的应用程序中通过向导来创建一个作业,所以我想测试是否创建了该作业,这是我的测试.
feature 'Processing step three', :js => true do
background do
to_step_2
to_step_3
end
scenario 'Creating job', js: true do
within '#login' do
fill_in 'Email', with: @customer.email
fill_in 'Password', with: @customer.password
click_button 'Login'
end
expect { click_link 'Create job' }.to change(Job, :count).by(1)
end
end
Run Code Online (Sandbox Code Playgroud)
因此,当用户填写了所有内容时,最后他们点击创建作业,就像我的测试所描述的那样.当我手动操作时,这工作正常,但当我运行我的规格时,我得到.
1) Creating a new job Processing step three Creating job
Failure/Error: expect { click_link 'Create job' }.to change(Job, :count).by(1)
count should have been changed by 1, but was changed by 0
# ./spec/features/creating_a_new_job_spec.rb:103:in `block (3 …Run Code Online (Sandbox Code Playgroud) elixir ×5
backbone.js ×1
capybara ×1
ecto ×1
go ×1
gorilla ×1
javascript ×1
json ×1
objective-c ×1
postgresql ×1
rest ×1
rspec ×1
symfony ×1
xcode ×1