我正在努力实现Ajax-Upload以在我的Rails 3应用程序中上传照片.文件说:
对于IE6-8,Opera,其他浏览器的旧版本,您可以像通常使用常规的基于表单的上传一样获得该文件.
对于使用进度条上传文件的浏览器,您需要获取原始发布数据并将其写入文件.
那么,我如何在控制器中接收原始发布数据并将其写入tmp文件,以便我的控制器可以处理它?(在我的情况下,控制器正在进行一些图像处理并保存到S3.)
一些额外的信息:
正如我现在配置的那样,帖子正在传递这些参数:
Parameters:
{"authenticity_token"=>"...", "qqfile"=>"IMG_0064.jpg"}
Run Code Online (Sandbox Code Playgroud)
...并且CREATE操作如下所示:
def create
@attachment = Attachment.new
@attachment.user = current_user
@attachment.file = params[:qqfile]
if @attachment.save!
respond_to do |format|
format.js { render :text => '{"success":true}' }
end
end
end
Run Code Online (Sandbox Code Playgroud)
...但我收到此错误:
ActiveRecord::RecordInvalid (Validation failed: File file name must be set.):
app/controllers/attachments_controller.rb:7:in `create'
Run Code Online (Sandbox Code Playgroud) 我需要将一个字符串拆分为两个变量.例如,以下内容可以正常工作:
first,second = "red,blue".split(',')
Run Code Online (Sandbox Code Playgroud)
我想分割用户输入,可能在逗号后面有一个可选空格.如何在逗号被吸收后写入空格?我需要正确处理所有这些可能性:
"red,blue" # first="red" second="blue"
"red, blue" # first="red" second="blue"
"red,dark blue" # first="red" second="dark blue"
"red, light blue" # first="red" second="light blue"
Run Code Online (Sandbox Code Playgroud) 我正在使用Heroku来托管Rails应用程序,这意味着使用Git部署到Heroku.由于Heroku上的"纯Git工作流程",任何需要上游到服务器的东西都必须在我的本地盒子上进行相同的配置.
但是我需要让某些配置文件不同,具体取决于我是在本地设置还是部署在Heroku上.再次,由于Heroku使用的部署方法,我不能使用.gitignore和模板(正如我已经多次提到的那样,并且已经在其他项目中使用过).
我需要的是让git以某种方式跟踪文件的变化,但有选择地告诉git在从特定的repo中提取时不要覆盖某些文件 - 基本上只对单向进行某些更改.
可以这样做吗?我很感激任何建议!
所以,我的Photo模型中有以下范围:
scope :best, order(:average_rating.desc)
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,事后评级被添加到模型中,因此生产应用程序有很多记录,其中average_rating
为零.当我调用这个范围时,它首先返回所有的nils - 实际上它应该是相反的,nils应该是最后的(它们是尚未评级的照片).
如何将nils排序到此范围的末尾?
sql sorting ruby-on-rails ruby-on-rails-3 rails-activerecord
标题几乎解释了它.我有一个奇怪的情况,允许用户使用Ajax删除通知的视图导致current_user被注销.我甚至不知道从哪里开始调试这个......
这是控制器
class NotificationsController < ApplicationController
def destroy
@notification = Notification.find(params[:id])
@notification.destroy
respond_to do |format|
format.js
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是整个控制器,没有任何删节.通知由系统生成,因此用户可以采取的唯一操作是"解雇"(即删除)它们.
我也尝试使用更新的respond_with
语法并具有相同的效果.
我正在使用Devise和Rails 3.0.9.知道会发生什么 - 或者如何调试?
- 编辑1 -
的routes.rb
resources :notifications, :only => [:destroy]
Run Code Online (Sandbox Code Playgroud)
删除链接
%span.delete= link_to( 'dismiss', notification_path(notification), :method => :delete, :remote => true )
Run Code Online (Sandbox Code Playgroud)
- 编辑2 -
好吧,我注意到日志里有一些新东西 - 见下面的****.
Started DELETE "/notifications/10" for 127.0.0.1 at 2011-06-21 21:47:15 -0500
Processing by NotificationsController#destroy as JS
Parameters: {"id"=>"10"}
SQL (0.4ms) SELECT name
FROM sqlite_master
WHERE type = 'table' …
Run Code Online (Sandbox Code Playgroud) 我一直在研究我的第一个Rails 3插件,打包一个简单的帮助函数,我喜欢在ApplicationHelper
我的所有应用程序中使用它.你可以在Github上看到整个代码.
这是我的第一次尝试:
## lib/semantic_id.rb ##
require 'semantic_id/version'
module ::ActionView::Helpers::TextHelper
def semantic_id
string = String.new
case
when controller.action_name =~ /new|edit/
string += controller.action_name + "_"
when controller.action_name =~ /index|create/
string += controller.controller_name
else
string += controller.controller_name.singularize
end
string += "_view"
end
end
Run Code Online (Sandbox Code Playgroud)
现在,这可行,但据我所知,这不是扩展ActiveSupport或任何其他Rails模块的'Rails 3方式'.我还没有找到很多关于你如何"应该"构建Rails 3 gem的文档.我试过按照Rails指南,但那里添加助手的方法不起作用,否则我错过了一些东西.
我的问题是:鉴于上面的代码作为我正在寻找的功能的一个例子,你将如何把它变成一个Rails 3插件Gem?
谢谢!
使用新的ActiveRecord :: Store进行序列化,文档提供了以下示例实现:
class User < ActiveRecord::Base
store :settings, accessors: [ :color, :homepage ]
end
Run Code Online (Sandbox Code Playgroud)
是否可以使用默认值声明属性,类似于:
store :settings, accessors: { color: 'blue', homepage: 'rubyonrails.org' }
Run Code Online (Sandbox Code Playgroud)
?
我的应用有照片,用户可以搜索符合特定条件的照片.假设用户按标签搜索照片,我们得到如下内容:
@results = Photo.tagged_with('mountain')
Run Code Online (Sandbox Code Playgroud)
现在,@results
将成为具有多个记录的标准activerecord查询.这些将以网格显示,然后用户可以点击照片.这将使用户photos#show
采取行动.
因此,假设用户搜索某些内容,并且该应用找到5条记录[1,2,3,4,5]
,并且用户点击了第3张照片.
在photo#show
页面上,我希望能够显示"下一张照片","上一张照片"和"返回搜索".
唯一的另一个限制是,如果用户直接浏览照片(通过另一个页面或书签等),则不会有逻辑"下一个"和"上一个"照片,因为没有一个查询导致他们照片,因此在这种情况下,模板根本不应呈现与查询相关的内容.
所以,我一直在考虑如何做这种事情,我真的没有很多好主意.我想我可以做一些事情,比如在会话中存储查询以便能够回到它,但我不知道如何找到所选照片左右两侧显示的照片.
有没有人有任何关于如何做这种事情的例子?
我有一个rails应用程序,我想开始启用一些iOS集成.我有一个基本的身份验证系统,主要是从头开始构建,有一点来自Sorcery的帮助.
我的理解是移动集成基本上有两种选择:HTTP Basic Auth或Token Auth.从我迄今为止所能找到的内容来看,令牌认证是首选方法.
我不熟悉令牌认证是什么或它应该如何工作,除了一些关于如何在Devise库中使用相关模块的教程之外,我还没有真正找到任何合适的指南.
所以,我的问题是,Token身份验证的基本理论是什么,以及rails中的from-scratch令牌身份验证系统会是什么样子?我理解为整个系统共享代码对于SO答案可能有点过分,但如果有人能帮助我理解这样一个系统应该如何工作的基本原理图,我将非常感激.我也很乐意接受任何关于如何从头开始做这些好材料的链接,因为主要问题是我找不到那样的东西.
谢谢!
我正在学习CoffeeScript,我有一个轻微的头痛,我还没弄清楚.如果我创建一个对象来做某些事情,我偶尔需要一个实例变量来在该方法之间共享该对象.例如,我想这样做:
testObject =
var message # <- Doesn't work in CoffeeScript.
methodOne: ->
message = "Foo!"
methodTwo: ->
alert message
Run Code Online (Sandbox Code Playgroud)
但是,您不能var
在CoffeeScript中使用,并且没有该声明message
仅在内部可见methodOne
.那么,如何在CoffeeScript中的对象中创建实例变量?
更新:修复了我的例子中的拼写错误,所以方法实际上是方法:)