小编Kir*_*rat的帖子

Rails:渲染不起作用,仍然得到`模板丢失'

我目前正在学习Rails指南.我经历了这些步骤,但仍然遇到了一个错误.

我的Ruby版本是ruby 2.1.1p76和Rails版本4.0.4.

作为指导,我创建了一个Article Controller.

class ArticlesController < ApplicationController
  def new
  end

  def create
    render plain: params[:article].inspect
  end

end
Run Code Online (Sandbox Code Playgroud)

我应该得到{"title"=>"First article!", "text"=>"This is my first article."}但输出结果是

Template is missing
Missing template articles/create, application/create with {:locale=>[:en], :formats=>[:html],    :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}.`
Run Code Online (Sandbox Code Playgroud)

这是我的相关路线:

articles GET    /articles(.:format)          articles#index
         POST   /articles(.:format)          articles#create
Run Code Online (Sandbox Code Playgroud)

更新:引用此问题时render plain:引入的新方法.Rails 4.1.0

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

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

Rails控制台:无法自动加载常量

我有一个Customer_ratings模型,允许用户互相留下反馈.Web应用程序正常运行,并收集,存储和显示反馈.

我想通过rails控制台进入并删除一些反馈,但是当我输入时Customer_rating.all,我收到以下错误:

LoadError: Unable to autoload constant Customer_rating, expected /Users/myapps/app/models/customer_rating.rb to define it
Run Code Online (Sandbox Code Playgroud)

同样,如果我输入Customer_rating [0],我会得到:

RuntimeError: Circular dependency detected while autoloading constant Customer_rating
Run Code Online (Sandbox Code Playgroud)

通过我的控制台访问其他表时我没有这个问题.

可能导致此问题的原因,以及为什么此错误不会禁止Customer_ratings通过Web应用程序正常工作?

associations autoload rails-console ruby-on-rails-4

22
推荐指数
2
解决办法
5万
查看次数

DatabaseCleaner + RSpec:正确的配置是什么?

database_cleaner在我的rails应用程序中包含了gem.遵循git repo上给出的示例,并包含以下代码spec_helper :

方法1

  config.before(:suite) do
   DatabaseCleaner.strategy = :transaction
   DatabaseCleaner.clean_with(:truncation)
  end

  config.around(:each) do |example|
   DatabaseCleaner.cleaning do
    example.run
   end
  end
Run Code Online (Sandbox Code Playgroud)

当我运行rspeci get错误时NoMethodError:undefined method 'cleaning' for DatabaseCleaner:Module.

所以我做了一些研究,发现我可以用以下内容替换config.around上面的块:

方法2

config.before(:each) do
 DatabaseCleaner.start
end

config.after(:each) do
 DatabaseCleaner.clean
end 
Run Code Online (Sandbox Code Playgroud)

要么

方法3

config.around(:each) do |example|
  DatabaseCleaner.start
  example.run
  DatabaseCleaner.clean
end
Run Code Online (Sandbox Code Playgroud)

方法2和方法3都运行良好.
我还查看了database_cleaner的git repo,发现该cleaning方法实际存在,并使用以下代码:

def cleaning(&block)
     start
     yield
     clean
   end
Run Code Online (Sandbox Code Playgroud)

这与我在例子3中所做的完全相同.如果确实存在那么为什么它不可访问?我在这里错过了一些东西.还有更多设置?或者方法2或3更好?

rspec ruby-on-rails rspec-rails ruby-on-rails-4 database-cleaner

21
推荐指数
1
解决办法
6638
查看次数

BeautifyRuby适用于.rb而不适用于.erb文件

我在OSX 10.9.1上使用ST2.我htmlbeautifier安装了gem.I安装BeautifyRuby使用Package Control.我ruby在默认设置中设置了路径和文件模式,BeautifyRuby如下所示:

{
"tab_or_space": "space",
"ruby": "/Users/(username)/.rvm/rubies/ruby-2.1.0/bin/ruby",
"file_patterns": ["\\.html\\.erb", "\\.rb", "\\.rake", "Rakefile", "Gemfile"],
"html_erb_patterns": ["\\.html\\.erb"],
"run_on_save": true,
"save_on_beautify": false
}
Run Code Online (Sandbox Code Playgroud)

对我来说BeautifyRuby,仅适用于带扩展名的文件,.rb不适用于带扩展名的文件.erb.

当我尝试美化.erb文件时,我收到以下错误:

"error: invalid output. check your ruby interpreter settings"
Run Code Online (Sandbox Code Playgroud)

我也尝试直接从git手动安装BeautifyRuby.仍然给我相同的结果.

ruby-on-rails sublimetext2 beautify-ruby

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

ActionController :: InvalidAuthenticityToken和域名

我发现使用诸如foo.bar.uk.com之类的域会导致在提交任何表单时Rails抛出ActionController::InvalidAuthenticityToken.

foo.bar.co.ukfoo.bar.co.com工作,但由于某种原因foo.bar.uk.com抛出错误.

某处是否有可接受的域/ TLD列表?

它还会在foo.bar.eu.com上抛出错误

更新:

删除:

:domain => :all
Run Code Online (Sandbox Code Playgroud)

从:

MyApp::Application.config.session_store :cookie_store, key: '_my_session', :domain => :all
Run Code Online (Sandbox Code Playgroud)

允许表单提交,但它不修复登录(即其他cookie相关的功能).

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

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

我无法安装回形针

我是rails的新手,我需要安装Peperclip(https://github.com/thoughtbot/paperclip),我不能,我看了我能找到的每个教程,但我找不到错误.我安装了ImageMagick并遵循github的所有指令.当我跑:

rails generate paperclip club imagen
Run Code Online (Sandbox Code Playgroud)

我懂了

/Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.0.4/lib/rails/generators/actions/create_migration.rb:13:in `migration_file_name': protected method `migration_file_name' called for #<PaperclipGenerator:0x000001053fbb68> (NoMethodError)
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.0.4/lib/rails/generators/actions/create_migration.rb:34:in `existing_migration'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/actions/empty_directory.rb:112:in `invoke_with_conflict_check'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/actions/create_file.rb:60:in `invoke!'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/actions.rb:94:in `action'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.0.4/lib/rails/generators/migration.rb:36:in `create_migration'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.0.4/lib/rails/generators/migration.rb:65:in `migration_template'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/paperclip-4.1.1/lib/generators/paperclip/paperclip_generator.rb:16:in `generate_migration'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/invocation.rb:133:in `block in invoke_all'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/invocation.rb:133:in `each'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/invocation.rb:133:in `map'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/invocation.rb:133:in `invoke_all'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/group.rb:232:in `dispatch'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.0.4/lib/rails/generators.rb:156:in `invoke'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/railties-4.0.4/lib/rails/commands/generate.rb:11:in `<top (required)>'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:229:in `require'
    from /Users/Moski/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:229:in `block in require' …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails imagemagick paperclip ruby-on-rails-4

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

回形针更改URL /路径

我正在使用Rails 4 Ruby 2.1.1

我需要更改我的:url,:path,:default所以我可以访问controllers目录中的example-data.csv文件.目前它正在存储我的example_data.csv文件public/origin/example_data.csv.但我希望我的example_data.csv文件保存在/ controllers/original目录中.

这就是我到目前为止所拥有的.

has_attached_file :

csvdata, :url => "/controllers/original/:style/:basename.:extension",
         :path => ":rails_root/controllers/original/:style/:basename.:extension",
         :default_url => "/controllers/original/example_data.csv"
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,它不会将我的代码放在controllers目录中.

ruby-on-rails-4

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

为什么 Rails 隐藏了 id 列的存在?

我不太明白需要id在 Rails 中隐藏列的存在。它既不反映在migration文件中,也不反映在schema.rb文件中。新手无法知道id默认情况下已将名为primary key. 除非他们去检查数据库 ( rails dbconsole)中表的实际模式。

我可以看到timestamps迁移文件中默认包含的宏以及schema.rb两个字段created_atupdated_at. 在这里,开发人员至少得到了一个线索。Rails 也可以为idcolumn做同样的事情。但事实并非如此。

为什么在id专栏周围保密?是名气的一部分convention over configuration吗?或者它是所有 MVC 框架的规范?

activerecord ruby-on-rails ruby-on-rails-4

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

如何通过 gem OmniAuth Facebook/Twitter 注销社交网站

我正在使用omniauth-facebookgemsomniauth-twitter来启用通过 Facebook、Twitter 登录。

一切正常,我可以使用OAuth. 这里的大问题是,当用户从我的应用程序注销时,它不会从他们进行身份验证的社交网站注销,这是危险的。

我想添加一个功能,该功能将破坏两个地方的会话,即我的应用程序和相应的社交网站。我怎么做?可以使用omniauth gems我目前正在使用的吗?或者是否有替代 gem/API 可以实现此目的?

twitter facebook ruby-on-rails omniauth ruby-on-rails-4

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

如何制作ActiveRecord ThreadSafe

如何使用postgresql在rails 4中创建以下控制器线程安全:

def controller_action
  if Model.exists(column_name:"some_value")
  else
    @model=Model.new(column_name:"some_value")
    @model.save
  end
end
Run Code Online (Sandbox Code Playgroud)

我正在运行puma,所以我担心的是,如果两个线程同时运行此控制器,并且不存在具有指定值column_name的行,则将创建两个记录,而我只想要1.

postgresql ruby-on-rails thread-safety ruby-on-rails-4 rails-activerecord

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