小编Kom*_*mbo的帖子

Turbolinks倍增绑定

我有一个问题,当通过浏览器使用后退/前进按钮时,Turbolinks会多次绑定事件.我有一个简单的脚本,以确保它不是我编写document.on()事件的方式,所以...

$(document).on 'page:load', ->
  alert 'Loaded'
Run Code Online (Sandbox Code Playgroud)

单击链接时会触发一次.单击向后或向前(或另一个Turbolink链接)它将触发两次.下次它会发射很多次而且会不断增长.这是我在jQuery和Turbolinks之外的清单文件中唯一拥有的东西.你如何防止Turbolinks重复事件绑定?

ruby-on-rails turbolinks ruby-on-rails-4

14
推荐指数
2
解决办法
3402
查看次数

Rails 3 - 缺少索引路径?

我的一个rails应用程序遇到了一个非常奇怪的问题.我想我可能正在做一些非常愚蠢的事情,而我却无法识别.我的问题是,我似乎错过了大约一半的索引路径.

例如,如果我的控制器是模型f​​oo的"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除了缺少索引路径的其他错误之外,还返回方法缺失错误.

rake routes ruby-on-rails

10
推荐指数
1
解决办法
4766
查看次数

用json响应时出错406

我正试图通过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?

json ruby-on-rails ruby-on-rails-3 batman.js

9
推荐指数
1
解决办法
2411
查看次数

Rails 3 - select_tag helper - 空白选项标签

我有一个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)

forms helpers ruby-on-rails-3

8
推荐指数
1
解决办法
9255
查看次数

Rails 3 - 条件路由?

我有关于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)

routing ruby-on-rails ruby-on-rails-3

7
推荐指数
1
解决办法
2673
查看次数

Rails 3 - 表单,自定义提交按钮基于动作?

我目前有几种形式,我正在尝试更改提交它的按钮,如果我正在编辑或新操作.我创建了两个表单但是这个表面很糟糕,我现在只使用单个表单部分.

在我的部分结束时,我在表格的末尾有这样的东西:

<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)

因此,表单只是重新呈现.问题是,我不再在编辑路径上了.这意味着,我的表单按钮不再显示.

我正在尝试做什么约定?

谢谢

ruby-on-rails ruby-on-rails-3

6
推荐指数
2
解决办法
5907
查看次数

用模型方法查询?

我在仅对活动对象执行查询时遇到问题.我在数据库中没有活动列,相反,在模型游戏中,我有以下方法:

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的对象?

ruby-on-rails ruby-on-rails-3

6
推荐指数
2
解决办法
8730
查看次数

Rails 3 - select_tag helper - array

我有一个问题,我有点不好意思问,但似乎无法搞清楚.

我正在编写一个表单,允许用户过滤信息,以便只查看他们想要的内容.在表单中,我使用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帮助程序时,从数组中获取项目以填充到单个标记的正确方法是什么?

谢谢

html-select ruby-on-rails helpers ruby-on-rails-3

5
推荐指数
1
解决办法
5371
查看次数

HTML/CSS - Flush Div Alignment?

我正在尝试创建一个设计,其中我有一个图像的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">&#8592; Previous</span> <a class="next_page" rel="next" href="/galleries?page=2">Next &#8594;</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)

html css

5
推荐指数
1
解决办法
3390
查看次数

使用Dragonfly从URL分配图像

我正在使用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)

ruby ruby-on-rails paperclip ruby-on-rails-3 dragonfly-gem

5
推荐指数
1
解决办法
3553
查看次数