小编Rob*_*udi的帖子

Rails + CarrierWave:NoMethodError:nil的未定义方法`name':NilClass

我正在使用CarrierWave和Rails 3.1.我提交表单(尝试上传图像)时收到以下错误消息:

错误信息:

ActiveRecord::StatementInvalid in Admin::PostsController#create

NoMethodError: undefined method `name' for nil:NilClass: INSERT INTO "posts" ("body", "created_at", "draft", "image", "post_type", "title", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?, ?, ?)
Rails.root: /Users/aziz/Sandbox/ruby/rails/Tumblelog

Application Trace | Framework Trace | Full Trace
app/controllers/admin/posts_controller.rb:18:in `create'
Request

Parameters:

{"utf8"=>"?",
 "authenticity_token"=>"za+zNRDGNCcujnCmO726cWCo2ze1rgaXv5bL17JGaek=",
 "post"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0x000001014aeff0 @original_filename="AzizLight.jpeg",
 @content_type="image/jpeg",
 @headers="Content-Disposition: form-data; name=\"post[image]\"; filename=\"AzizLight.jpeg\"\r\nContent-Type: image/jpeg\r\n",
 @tempfile=#<File:/var/folders/ky/2ddtbt0d7k1g__2ctr8njcfc0000gn/T/RackMultipart20110918-21704-hp2ajt>>,
 "draft"=>"0",
 "user_id"=>"2",
 "post_type"=>"image"},
 "commit"=>"Post"}
Run Code Online (Sandbox Code Playgroud)

问题是我不知道它name来自哪里,我不知道哪个变量是零,所以我无法正常调试(我试着调试日志然后再问这里).第18行对应@post.save于以下控制器中的行:

PostsController:

# ...

def new
  @post = Post.new
  @form_html_options = (params[:post_type] == "image") …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails nomethoderror carrierwave

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

Rails:如何使用RSpec测试子域

我正在开发一个严重依赖子域的应用程序.它有一个嵌入在应用程序(模块)中的应用程序,它将作为管理应用程序的后端.我们把它命名为kong.

我在我的路线文件中有这个代码:

constraints :subdomain => "kong" do
  scope :module => "kong", :as => "kong" do
    resources :clients
  end
end
Run Code Online (Sandbox Code Playgroud)

我如何测试这条路线,以便当我写下类似于下面的内容时,它从子域中获取,并且仅从子域中获取:

get :index
Run Code Online (Sandbox Code Playgroud)

subdomain rspec ruby-on-rails-3

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

我可以创建什么(某种)项目来学习JavaScript?

我刚开始学习JavaScript.这是一种相当简单的编程语言,考虑到我在大学学习Java,我非常了解php,并且我已经玩过python和ruby.问题是要正确学习编程语言,我通常会创建一个项目.在javascript中,我只是不知道我可以创建什么样的项目 - 也就是说,一个非基于Web或与Web浏览器相关的项目.我可以创建javascript shell脚本吗?在网络浏览器旁边常用的javascript在哪里?

那么,有人可以给我一些想法吗?

javascript projects

6
推荐指数
1
解决办法
624
查看次数

创建"双向"配置文件

我正在编写针对非极客,非程序员的PHP应用程序.我需要创建一个带有一堆"选项"的选项页面,然后将这些选项存储在某个地方.使用数据库应用程序(MySQL/PostgreSQL/SQLite)是不可能的,因为它需要比用户需要更多的配置(我不希望用户在他不想要时进行任何类型的配置) .因此,剩下的唯一解决方案是将配置写入配置文件.另一方面,我还希望配置文件是人类可读的,以防用户是极客并且他想直接编辑配置文件(或者如果他想通过SSH或任何原因远程编辑文件). ..)

以下是我发现的几种潜在解决方案:

使用JSON文件...

...从文件中检索数据,使用json_decode转换数据,将其输出为HTML,检索任何更改,使用json_encode进行编码等.您可以获得图片.有一些我不喜欢这种方法的东西,主要的一点是使用PHP编码的JSON数据不会格式化,很难编辑而不事先重新格式化.

使用XML文件

我不会描述这个解决方案,因为我也不喜欢它......我不知道如何使用XSLT并且不想学习......而且因为它是一个非常重要的解决方案,至少与JSON解决方案相比.如我错了请纠正我.

使用INI文件

我喜欢INI文件,真的很喜欢它们!我认为它们真的是最具可读性的,并且很难搞砸(即:语法错误).该解决方案的问题在于没有本地方式来编写/编辑ini文件.我发现了一个主题,显示了一个自定义方法来编写一个...如果我找不到更好的东西,这可能是我将采用的解决方案......

使用两个文件

最后的解决方案似乎与INI解决方案一样合理.事实上,我可以使用INI文件作为"输入"(用户可以根据需要编辑的文件)和XML/JSON文件作为输出(每次用户更改选项时将由PHP编辑的文件网络前端).此时,最佳解决方案是,如果用户直接编辑配置文件,则要求用户手动重新加载配置,以便"输​​出"文件始终是最新的.


我知道上面的解决方案都不是完美的,这就是我创建这个主题以寻求建议的原因.什么是最好的解决方案?也许(可能)我错过了另一个解决方案.

最后一件事:YAML不是一个有效的解决方案,因为如果你不熟悉它,它会更容易弄乱语法.PHP也不是解决方案,因为用PHP编辑PHP是一件痛苦的事.如果我想要检索一些配置但不通过Web前端直接编辑它,PHP只是一个很好的解决方案.

php xml ini json configuration-files

6
推荐指数
1
解决办法
1787
查看次数

如何在Rails 3.2中拯救来自中间件的自定义异常?

我有一个使用Apartment的Rails 3.2应用程序,它用作中间件.公寓抛出一个Apartment::SchemaNotFound异常,也没有办法与拯救它rescue_fromApplicationController.我想我会config.exceptions_app按照这篇博文中第3点的描述使用,但我不能将路由器设置为异常应用程序,我假设我必须创建自己的.

所以问题是:我该如何进行?

middleware exception-handling ruby-on-rails-3

6
推荐指数
1
解决办法
2348
查看次数

应该如何命名MiniTest :: Spec文件?

我想使用MiniTest :: Spec,我找到了一些资源来开始,但是他们都没有提到应该命名测试文件(或spec文件)的位置,以及应该放置它们的位置:

  • test/test_*
  • spec/*_spec.rb

那么我应该使用哪一个?

ruby specifications naming-conventions minitest

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

Vim:一段时间后自动退出插入模式

我希望Insert在一段时间(15秒)后自动使Vim离开模式.以下是我的内容.vimrc:

" set 'updatetime' to 15 seconds when in insert mode
au InsertEnter * let updaterestore = &updatetime | set updatetime=15000
au InsertLeave * let &updatetime = updaterestore

" automatically leave insert mode after 'updatetime' milliseconds of inaction
au CursorHoldI * stopinsert
Run Code Online (Sandbox Code Playgroud)

我在MacVim中使用此代码段,但它不起作用.当我进入Insert模式,而我什么都不做时,Vim在15秒后离开插入模式.但是,如果我按EnterBackspace,或者如果我Insert使用o/ 进入模式O,则Vim立即离开Insert模式,此时,即使我Insert使用i Vim 进入模式,也会立即返回Normal模式.

我在Mac OS X 10.8.5上使用Homebrew安装了MacVim

任何想法为什么这不起作用?

编辑:这是我的MacVim版本,包含所有标志:

VIM - Vi IMproved …
Run Code Online (Sandbox Code Playgroud)

vim

5
推荐指数
0
解决办法
449
查看次数

变更日志文件:YAML、JSON、CSV

我正在 CodeIgniter 中创建一个简单的 Changelog 库,基本上每次有人添加、删除、更改或发布博客文章时都会记录一条消息。我将以 300 条为一批将消息记录到文件中。因此,每条第 301 条消息都会记录在一个新文件中。起初我想将日志写入简单的 .log 文件,但后来我有了实际设计样式的想法,并且我必须分离每条消息的每个“属性”(即:用户、消息、日志类型) , ETC。)。因此 .log 文件是不可能的,因为提取信息会很痛苦。

对于此类任务最合适的格式是什么?我已经排除了 MySQL 和 XML,因为它们太重了(特别是考虑到日志文件不会超过(大约)300 行)。我在标题中建议使用 YAML、JSON 和 CSV,但是还有更好的选择吗?

php csv logging json yaml

3
推荐指数
1
解决办法
4237
查看次数

RSpec:为什么不让工作,但之前(:每个)呢?

我有当前的规格:

describe "DELETE 'destroy'" do
  let(:client) { create(:client) }

  #before(:each) do
    #@client = create(:client)
  #end

  it "should delete a client" do
    expect {
      delete :destroy, :id => client
    }.to change(Client, :count).by(-1)
  end

  # ...

end
Run Code Online (Sandbox Code Playgroud)

我使用时示例失败let但在我使用时工作正常before(:each).

这是实现代码:

def destroy
  client = Client.find(params[:id])
  if client.destroy
    flash[:success] = "Client deleted successfully"
    redirect_to kong_clients_url
  else
    flash[:error] = "Client not deleted for some reason"
    redirect_to kong_clients_url
  end
end
Run Code Online (Sandbox Code Playgroud)

那么当我使用let时,为什么示例会失败?!

ruby rspec ruby-on-rails rspec2 ruby-on-rails-3

2
推荐指数
1
解决办法
880
查看次数

Vim:在没有逃犯的情况下在灯线状态行中显示当前git分支

我正在使用lightline.vim,我想展示当前的git分支.目前,我正在使用vim-fugitive这样做,但是,我根本不使用这个插件,除了在状态行中显示git分支.

我的问题是:

有没有办法在不使用逃犯的情况下在状态行中显示git分支?

我试图创建一个我挂钩到lightline的自定义函数.该函数使用systemvimscript函数获取当前git分支.它(没有)运行良好,除了状态线在每次击键时刷新,这打破了其他一切并使vim无法使用.从本质上讲,git分支是system在每次击键时使用该函数获取的......

所以这不是一个可行的解决方案.我"可以"做的是,创建一个全局变量,说明是否获取了git分支,并阻止自定义函数在已经获取的情况下再次获取分支名称.然后每次MacVim失去焦点时我都可以再次获取分支名称(不知道如何使用终端vim进行此操作).虽然这不太理想......

关于如何解决这个问题的任何想法好吗?

git vim vim-fugitive

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