为了解释想象一个简单的地址.写在带有换行符的HTML段落中,它会这样:
Street: Example Street 1
City: Vienna
Zip Code: 1010
Country: Austria
Run Code Online (Sandbox Code Playgroud)
大部分时间都完全可以,但有时我必须达到以下输出:
Street: Example Street 1
City: Vienna
Zip Code: 1010
Country: Austria
Run Code Online (Sandbox Code Playgroud)
到目前为止我的想法:
你如何实现这个输出(使用HTML和/或CSS)?
最近我一直在考虑有限状态机(FSM),以及如何在软件中实现它们(编程语言并不重要).
我的理解是确定性状态机被广泛使用(解析/词法分析器,编译器等),但是非确定性状态机的问题是什么?
我知道可以将所有非确定性状态机转换为确定性状态机(甚至是以编程方式).那不是我的观点.我还想象非确定性状态机实现起来要复杂得多.
总之,它使任何意义上实现非确定性状态机?有什么特别的应用我不知道吗?这可能是什么原因?也许优化和专业的非确定性状态机更快?
我正在使用awesome_nested_set我的Rails项目中的插件.我有两个看起来像这样的模型(简化):
class Customer < ActiveRecord::Base
has_many :categories
end
class Category < ActiveRecord::Base
belongs_to :customer
# Columns in the categories table: lft, rgt and parent_id
acts_as_nested_set :scope => :customer_id
validates_presence_of :name
# Further validations...
end
Run Code Online (Sandbox Code Playgroud)
数据库中的树按预期构造.的所有值parent_id,lft以及rgt是否正确.树有多个根节点(当然允许进入awesome_nested_set).
现在,我想在一个正确排序的树中呈现给定客户的所有类别,例如结构:例如嵌套<ul>标签.这不会太难,但我需要它才能有效(sql查询越少越好).
更新:想出可以在没有进一步SQL查询的情况下计算树中任何给定节点的子节点数:number_of_children = (node.rgt - node.lft - 1)/2.这并不能解决问题,但可能会有所帮助.
有谁知道为什么respond_to生成的edit动作没有阻止?典型脚手架控制器中的每个其他动作都有一个respond_to块,以便输出html和xml格式化.为什么edit行动是例外?
我正在使用最新版本的Ruby on Rails(2.1.1).
我正在尝试SELECT使用GROUP BY子句创建语句,该子句应返回"默认值".
想象一下以下简单的MySQL表:
CREATE TABLE `tracker` (
`id` INTEGER PRIMARY KEY auto_increment,
`date` DATETIME NOT NULL,
`customer_id` INTEGER NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
该表只包含一条记录:
INSERT INTO `tracker` (`date`, `customer_id`) VALUES('2010-05-03', 1);
Run Code Online (Sandbox Code Playgroud)
在病房之后,我正在执行以下SQL查询:
SELECT DATE(`date`), COUNT(customer_id) FROM tracker
WHERE DATE(`date`) >= '2010-05-01' AND DATE(`date`) <= '2010-05-05'
GROUP BY DATE(`date`) ORDER BY DATE(`date`);
Run Code Online (Sandbox Code Playgroud)
并获得预期的结果集:
+----+---------------------+-------------+
| id | date | customer_id |
+----+---------------------+-------------+
| 1 | 2010-05-10 00:00:00 | 1 |
+----+---------------------+-------------+
Run Code Online (Sandbox Code Playgroud)
但是,我希望结果集看起来像这样:
+--------------+--------------------+
| DATE(`date`) | COUNT(customer_id) |
+--------------+--------------------+ …Run Code Online (Sandbox Code Playgroud) 想象一下,在您的应用程序中有两个RESTful控制器(UsersController,OffersController)和一个PagesController(用于静态内容,如index,about等).
您定义了以下路由:
map.with_options :controller => 'pages' do |pages|
pages.root :action => 'index' # static home page
pages.about :action => 'about' # static about page
# maybe more static pages...
end
map.resources :users # RESTful UsersController
map.resources :posts # RESTful PostsController
Run Code Online (Sandbox Code Playgroud)
您的应用程序布局如下所示:
<html>
<head>
<title>Demo Application</title>
</head>
<body>
<ul id="menu">
<li>
<%= link_to 'Home', root_path %>
</li>
<li>
<%= link_to 'Offers', offers_path %>
<ul id="submenu>
<li><%= link_to 'Search', 'path/to/search' %></li>
<li>maybe more links...</li>
</ul>
</li>
<li>
<%= link_to 'About', about_path %> …Run Code Online (Sandbox Code Playgroud) 最近我在我的一个应用程序中更改了一些嵌套资源以使用浅层路由.它工作得很好,我已经能够简化我的视图和控制器.
但是,我之前一直在使用path_prefix:
map.with_options :path_prefix => "blog" do |blog|
blog.resources :posts do |posts|
posts.resources :comments
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,所有路由都按预期为"/ blog"作为前缀.
# $ rake routes
# posts GET /blog/posts(.:format) {:controller=>"posts", :action=>"index"}
# POST /blog/posts(.:format) {:controller=>"posts", :action=>"create"}
# new_post GET /blog/posts/new(.:format) {:controller=>"posts", :action=>"new"}
# edit_post GET /blog/posts/:id/edit(.:format) {:controller=>"posts", :action=>"edit"}
# post GET /blog/posts/:id(.:format) {:controller=>"posts", :action=>"show"}
# PUT /blog/posts/:id(.:format) {:controller=>"posts", :action=>"update"}
# DELETE /blog/posts/:id(.:format) {:controller=>"posts", :action=>"destroy"}
# post_comments GET /blog/posts/:post_id/comments(.:format) {:controller=>"comments", :action=>"index"}
# POST /blog/posts/:post_id/comments(.:format) {:controller=>"comments", :action=>"create"}
# new_post_comment GET /blog/posts/:post_id/comments/new(.:format) {:controller=>"comments", :action=>"new"}
# edit_post_comment …Run Code Online (Sandbox Code Playgroud) 我有一个基本模型,我已经指定了一些字段来验证存在.在控制器的创建动作中我做标准:
@obj = SomeObject.new(params[:some_obj])
if @obj.save
flash[:notice] = "ok"
redirect...
else
flash[:error] = @obj.errors.full_messages.collect { |msg| msg + "<br/>" }
redirect to new form
end
Run Code Online (Sandbox Code Playgroud)
但是,当我重定向到新表单时,错误显示,但字段为空.有没有办法用输入的值重新填充字段,以便可以轻松纠正错误?
我在GitHub上有我经常从我的本地计算机上提交的存储库.另一方面,我从存储库中取出服务器.Web服务器只是执行a git pull以从GitHub存储库获取最新的更改.这是完全自动化的,应该保持这种方式(像Ruby Tool Capistrano这样的解决方案已经出局).
一个简单的git pull通常工作得很好.但是,有时我将最后一次commit(git commit --amend)和git push更改两次更改为GitHub.如果服务器在两次推送到GitHub之间自动更新它的代码,则下一个服务器端git pull失败,因为存在合并冲突.
要解决此问题,我需要以下行为:服务器应继续git pull(或等效)GitHub存储库,但如果发生合并冲突,GitHub存储库应优先于服务器上的本地存储库.所以,我想要一个行为类似的git命令git clone,但不会每次都复制整个存储库.
我正在开发一个简单的Web应用程序,它具有用户模型和角色模型(以及其他),以及包含许多控制器的管理部分.我想使用before_filter来检查会话中用户的用户是否有'can_access_admin'标志.
我在application.rb中有这个代码:
def check_role @user = session [:user]
if @ user.role.can_access_admin.nil?|| !@user.role.can_access_admin render:text =>"您当前的角色不允许访问管理区域." 返回结束
然后我在其中一个管理控制器中有这个代码:
class Admin :: BlogsController <ApplicationController before_filter:check_role
def list @blogList = Blog.find(:all)end end
当我尝试查看列表操作时,我收到此错误:
未定义的方法'角色'为用户...
任何人都知道我必须做什么才能在application.rb中识别角色关联?(请注意,关联配置正确,@ user.role在我试图使用的其他地方工作正常)