我正在阅读凤凰城会议指南.它很好地解释了我如何使用put_session以后使用和获取值来将数据绑定到会话,get_session但它没有告诉我如何删除用户的会话.
从指南:
defmodule HelloPhoenix.PageController do
use Phoenix.Controller
def index(conn, _params) do
conn = put_session(conn, :message, "new stuff we just set in the session")
message = get_session(conn, :message)
text conn, message
end
end
Run Code Online (Sandbox Code Playgroud) 在Phoenix,有什么方法可以指定使用哪个View而不是让Controller命名空间中的变形?
我有多个控制器,每个控制器的视图方法都相同.我想创建一个单独的视图,并与(几乎)我的所有控制器一起使用它.
这可能吗?更重要的是,这是一种不好的做法还是在我的情况下是合理的?
我正在开发一个带有片段导航模式的Android应用程序(一个活动包含许多碎片).我已经设法按照本指南实施共享项目转换,但它们只能继续工作,而不是回击.
My Fragment(被称为UserFragment)由一个ViewPager带有RecyclerViews的3个片段组成.单击RecyclerViews中的任何项目将打开另一个UserFragment具有相同视图的项目.切换到新片段时,过渡效果非常好,但是在关闭它时我无法使其工作.回击时,片段会淡出,前一个片段会淡入.
transitionName是个人资料SharedItemTransition 是一个扩展的自定义类 TransitionSet这onBindViewHolder是我的RecyclerView适配器的方法:
public void onBindViewHolder(final UserViewHolder uvh, int position) {
final LocUser user = users.get(position);
String transition = "user_" + user.id() + "_type_" + type + "_item_" + position + "_profile_image";
uvh.name.setText(user.name());
uvh.username.setText(user.handle());
Global.setImage(uvh.userImage, user.profileImage());
ViewCompat.setTransitionName(uvh.userImage, transitionName(position));
uvh.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
activity.openUserProfile(user, …Run Code Online (Sandbox Code Playgroud) 在Ruby中,我可以去:
"Sergio"[1..-1] #> "ergio"
Run Code Online (Sandbox Code Playgroud)
在Elixir中执行相同操作会产生运行时错误:
iex(1)> "Sergio"[1..-1]
** (CompileError) iex:1: the Access syntax and calls to Access.get/2 are not available for the value: "Sergio"
Run Code Online (Sandbox Code Playgroud)
还尝试过:
iex(1)> String.slice("Sergio", 1, -1)
** (FunctionClauseError) no function clause matching in String.slice/3
(elixir) lib/string.ex:1471: String.slice("Sergio", 1, -1)
Run Code Online (Sandbox Code Playgroud)
如何从Elixir中的字符串中获取子字符串?
如下面的ruby示例所示,我不能lambda使用Proc从a创建的错误数量的参数调用,Method因为它对参数的数量是严格的:
# method with no args
def a; end
instance_eval(&method(:a))
# ArgumentError: wrong number of arguments (1 for 0)
method(:a).to_proc.call(1, 2, 3)
# ArgumentError: wrong number of arguments (3 for 0)
method(:a).to_proc.lambda?
# => true
Run Code Online (Sandbox Code Playgroud)
我如何得到一个Proc不是来自一个Proc或来自一个lambda的lambda Method?
我的Ruby 2 + Rails 4 + Mongoid 4应用程序在开发上完美运行.但当我推送到Heroku时,应用程序崩溃了.我试过分析Heroku日志,但无法解决问题.我甚至试过禁用我认为可能是原因的宝石,但这没用.
我正在使用的其他一些宝石android_market_api,devise和s3_direct_upload.请帮忙!
2013-12-06T12:31:34+00:00 heroku[slug-compiler]: Slug compilation finished
2013-12-06T12:31:35.094147+00:00 heroku[web.1]: State changed from crashed to starting
2013-12-06T12:31:40.754686+00:00 heroku[web.1]: Starting process with command `bundle exec unicorn -p 3309 -c ./config/unicorn.rb`
2013-12-06T12:31:46.061981+00:00 app[web.1]: I, [2013-12-06T12:31:46.061146 #2] INFO -- : Refreshing Gem list
2013-12-06T12:31:50.812324+00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/optionable-0.2.0/lib/optionable.rb:32:in `block in validate_strict': :skip_version_check is an unknown option. Valid options are: :write, :read, :database, :max_retries, :pool_size, :retry_interval, :refresh_interval, :down_interval, :ssl, :timeout, :instrumenter. (Optionable::Unknown) …Run Code Online (Sandbox Code Playgroud) 在使用android-async-http图书馆时我偶然发现了params.add().
我已经使用params.put()了一段时间,它似乎比add()它允许除String之外的数据类型(如int,long,object,file)更好,而add()不是.
RequestParams params = new RequestParams();
// So how is this
params.add("param_a", "abc");
// different from this
params.put("param_a", "abc");
// and which one should I use?
Run Code Online (Sandbox Code Playgroud) 我知道我可以通过这样做在elixir中将两个相等的一半分成一个偶数列表:
list = [1, 2, 3, 4, 5, 6]
len = length(list)/2 |> round
[a, b] = Enum.chunk(list, len) # => [[1, 2, 3], [4, 5, 6]]
Run Code Online (Sandbox Code Playgroud)
但是内置了ruby-esque方法还是有一些更有效的方法来处理奇数长度列表?
在ruby脚本中,我可以简单地做:
require 'some-gem'
SomeGem.do_something!
Run Code Online (Sandbox Code Playgroud)
如何在exs不创建全新混合项目的情况下在elixir 脚本中执行类似的操作?到目前为止,我已经搜索了谷歌如何做到这一点,并阅读了一些博客文章(如此),但无法找到一个正确的(阅读'简单')方式来做到这一点.
具体来说,我想HTTPoison在我的elixir脚本中使用.
当我们发送请求时,我们在conn结构中有当前路径信息.让我们说补丁请求.
["v1", "users", "2"] or "v1/users/2"
Run Code Online (Sandbox Code Playgroud)
我正在根据db中的路径信息为用户授权编写插件.在db中,路径存储如下:
"v1/users/:id"
Run Code Online (Sandbox Code Playgroud)
这是我们从跑步中获得的路径mix phx.routes.我有可能得到"v1/users/:id"而不是"v1/users/2"当前的路径吗?所以我可以将它与db中存储的路径相匹配.
有什么工作吗?