我有一个问题,当通过浏览器使用后退/前进按钮时,Turbolinks会多次绑定事件.我有一个简单的脚本,以确保它不是我编写document.on()事件的方式,所以...
$(document).on 'page:load', ->
alert 'Loaded'
Run Code Online (Sandbox Code Playgroud)
单击链接时会触发一次.单击向后或向前(或另一个Turbolink链接)它将触发两次.下次它会发射很多次而且会不断增长.这是我在jQuery和Turbolinks之外的清单文件中唯一拥有的东西.你如何防止Turbolinks重复事件绑定?
我的一个rails应用程序遇到了一个非常奇怪的问题.我想我可能正在做一些非常愚蠢的事情,而我却无法识别.我的问题是,我似乎错过了大约一半的索引路径.
例如,如果我的控制器是模型foo的"foos",我将拥有:
foos POST /foos(.:format) {:action=>"create", :controller=>"foos"}
Run Code Online (Sandbox Code Playgroud)
但没有GET选项通常如下:
foos GET /foos(.:format) {:action=>"index", :controller=>"foos"}
Run Code Online (Sandbox Code Playgroud)
下面我将向您展示我的实际代码,以帮助我恢复丢失的索引路线.
routes.rb中:
resource :announcements, :controller => "announcements" do
resources :comments
member do
post 'vote'
end
end
Run Code Online (Sandbox Code Playgroud)
公告部分的路线:
announcements POST /announcements(.:format) {:action=>"create", :controller=>"announcements"}
new_announcements GET /announcements/new(.:format) {:action=>"new", :controller=>"announcements"}
edit_announcements GET /announcements/edit(.:format) {:action=>"edit", :controller=>"announcements"}
GET /announcements(.:format) {:action=>"show", :controller=>"announcements"}
PUT /announcements(.:format) {:action=>"update", :controller=>"announcements"}
DELETE /announcements(.:format) {:action=>"destroy", :controller=>"announcements"}
Run Code Online (Sandbox Code Playgroud)
如你所见,没有get/index.在我的控制器中,我有简单的索引方法定义...
def index
@announcements = Announcement.all
respond_to do |format|
format.html
format.xml { render :xml => @announcements }
end
end
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么我没有这个索引路径.它也发生在其他几个控制器上.任何帮助,将不胜感激.
编辑:在控制台中,app.announcements_path
除了缺少索引路径的其他错误之外,还返回方法缺失错误.
我正试图通过batman-rails gem获得一个使用node.js框架batman.js运行的rails应用程序.
当我在我的rails控制器中使用json进行响应时,每次都会出现406错误,我不知道为什么.这是我的控制器:
respond_to :json
def index
respond_with Sample.all
end
Run Code Online (Sandbox Code Playgroud)
无论如何,这给了我406.我不认为这与蝙蝠侠有关,而是跟踪自己.但是好的方法,这是我的蝙蝠侠代码:
index: (params) ->
TopNavTemplate.Sample.load (err) -> throw err if err
@set 'samples', TopNavTemplate.Sample.get('all')
Run Code Online (Sandbox Code Playgroud)
然后我的index.html.erb文件只是说"索引",它还没有真正用蝙蝠侠做任何事情.
有很多与406 JSON相关的问题,我还没有真正将它们应用到我的情况中.有没有什么我做错了使rails response_with JSON?
我有一个select_tag从我用来执行搜索的@users数组中填充.当用户首次登陆页面时,我希望它显示空白或自定义标签,而不是数组中的第一个项目?
这是使用select_tag助手的选项吗?要插入空白""选项?
我的助手到目前为止:
<%= select_tag :search_user, options_from_collection_for_select(@users, "id", "name"), :class => 'submittable'%>
Run Code Online (Sandbox Code Playgroud) 我有关于rails 3的路由问题,并设置条件:根路径.
现在,我的route.rb有以下内容:
root :to => "topics#index"
Run Code Online (Sandbox Code Playgroud)
这很棒,但是只有当用户在我的网站上的特定子域(basecamp样式)上时才会这样.如果他们去www.myapp.com或myapp.com,这应该是不一样的:root.我很想知道这是否完全可以设置,这就像......
if default_subdomain(www, "")
root :to => "promos#index"
else
root :to => "topics#index
end
Run Code Online (Sandbox Code Playgroud)
我知道在routes.rb中不允许这样做,但是会做同样合乎逻辑的事情.有没有人对此有任何经验,或者我可以阅读的任何文档/博客试图设置这样的东西.
谢谢
根据chuck的帮助(感谢一吨),这最终成为我的工作代码:
constraints(:subdomain => "www") do
root :to => "promos#index"
end
root :to => "topics#index"
Run Code Online (Sandbox Code Playgroud) 我目前有几种形式,我正在尝试更改提交它的按钮,如果我正在编辑或新操作.我创建了两个表单但是这个表面很糟糕,我现在只使用单个表单部分.
在我的部分结束时,我在表格的末尾有这样的东西:
<p>
<% if controller.action_name == 'new' %>
<%= f.submit "Create", :class => "pink_button"%> or
<% elsif controller.action_name == 'edit' %>
<%= f.submit "Update", :class => "pink_button"%> or
<% end %>
<%= link_to "cancel", :back %>
</p>
Run Code Online (Sandbox Code Playgroud)
这样,如果我创建一些新的,按钮显示"Create",如果它是用户试图完成的更新,则按钮显示"Update".这很有效,直到表单提交并且验证失败.
在我的控制器中,我正在捕捉失败的东西:
def update
@list = current_user.lists.find(params[:id])
if @list.update_attributes(params[:list])
redirect_to list_path(@list), :notice => "List '#{@list.name}' updated."
else
render :action => 'edit'
end
end
Run Code Online (Sandbox Code Playgroud)
因此,表单只是重新呈现.问题是,我不再在编辑路径上了.这意味着,我的表单按钮不再显示.
我正在尝试做什么约定?
谢谢
我在仅对活动对象执行查询时遇到问题.我在数据库中没有活动列,相反,在模型游戏中,我有以下方法:
def complete?
self.winner ? true : false
end
Run Code Online (Sandbox Code Playgroud)
这样,如果一个游戏有一个胜利者,#complete?
将返回true.我想查询所有会为此方法返回false的游戏,有没有办法用ActiveRecord执行此操作?现在在我的控制器中我只是打电话@games = Game.all
,然后在我的部分渲染游戏中:
<% unless game.complete? %>
yada yada
<% end %>
Run Code Online (Sandbox Code Playgroud)
这似乎有点hacky,如果我想显示"已完成"的游戏,则需要我写一个不同的部分.无论如何,我想知道控制器中是否有一种方法只能分配从模型方法返回true/false的对象?
我有一个问题,我有点不好意思问,但似乎无法搞清楚.
我正在编写一个表单,允许用户过滤信息,以便只查看他们想要的内容.在表单中,我使用select_tag帮助程序作为下拉菜单.选择菜单由一组用户填充.我有以下代码:
<% @users.each do |user| %>
<%= select_tag "users", options_for_select([user.name]) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
这个问题是它为@users数组中的每个user.name生成一个选择菜单.我假设问题是我在@users上使用.each.但是,今天早上我一直在努力解决这个问题,所以我想我只会问......
在使用select_tag帮助程序时,从数组中获取项目以填充到单个标记的正确方法是什么?
谢谢
我正在尝试创建一个设计,其中我有一个图像的div,然后下面的上一个/下一个按钮与图像/ div齐平.我遇到了一些问题,因为两者之间总有一些空间.
红色是我想要消除的,我似乎无法找到它的来源.它目前是红色的,因为我指定了干燥的背景颜色,以找出为什么创建这个空间/压缩它.
这是我的HTML:
<div class="picture">
<a href="/galleries/6">
<img alt="Preview_firefox_wallpaper" src="/uploads/unlocked_image/file/6/preview_Firefox_wallpaper.png?1311526840" />
</a>
<div class="pagination"><span class="previous_page disabled">← Previous</span> <a class="next_page" rel="next" href="/galleries?page=2">Next →</a></div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的CSS,我想问题就在这里,但我似乎无法找到它...感谢您的帮助,我一直在用这种方式挣扎太久.
/* galleries#index */
.time {
font-size: 16px;
color: #333333;
}
#image_description {
clear: both;
}
/* _picture */
div .picture {
width: 642px;
margin: auto;
background-color: red;
}
.logo {
width: 140px;
float: left;
height: 38px;
color: #FFFFFF;
background-color: #000000;
font-size: 28px;
font-weight: 400;
}
.logo a a:visited{
color: #FFFFFF;
}
.logo a:visited{
color: #FFFFFF; …
Run Code Online (Sandbox Code Playgroud) 我正在使用Dragonfly处理Rails 3.1应用程序上的图像.我正在努力通过网址将图像分配给模型.
我有一个工作正常的形式:
<%= form_for [@word, @game, @picture], :html => {:multipart => true} do |f| %>
<%= f.hidden_field :retained_image %>
<p>
<%= f.label :image, "upload pic" %><br />
<%= f.file_field :image %>
</p>
<p>
<%= f.label :image_url, "or pic URL" %><br />
<%= f.text_field :image_url %>
</p>
<p>
<% if @picture.image_uid? %>
<label>Remove Picture?</label>
<%= f.check_box :remove_image %>
<% end %>
</p>
<p><%= f.submit %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
Dragonfly的文档说明:
Dragonfly提供了一个直接从url分配的访问器:
@album.cover_image_url = 'http://some.url/file.jpg'
Run Code Online (Sandbox Code Playgroud)
但是当我在我的控制台中尝试时:
=> #<Picture id: nil, game_id: nil, …
Run Code Online (Sandbox Code Playgroud)