我目前正在学习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
我有一个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应用程序正常工作?
我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)
当我运行rspec
i 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
我在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.仍然给我相同的结果.
我发现使用诸如foo.bar.uk.com之类的域会导致在提交任何表单时Rails
抛出ActionController::InvalidAuthenticityToken
.
foo.bar.co.uk和foo.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相关的功能).
我是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) 我正在使用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目录中.
我不太明白需要id
在 Rails 中隐藏列的存在。它既不反映在migration
文件中,也不反映在schema.rb
文件中。新手无法知道id
默认情况下已将名为primary key
. 除非他们去检查数据库 ( rails dbconsole
)中表的实际模式。
我可以看到timestamps
迁移文件中默认包含的宏以及schema.rb
两个字段created_at
和updated_at
. 在这里,开发人员至少得到了一个线索。Rails 也可以为id
column做同样的事情。但事实并非如此。
为什么在id
专栏周围保密?是名气的一部分convention over configuration
吗?或者它是所有 MVC 框架的规范?
我正在使用omniauth-facebook
gemsomniauth-twitter
来启用通过 Facebook、Twitter 登录。
一切正常,我可以使用OAuth
. 这里的大问题是,当用户从我的应用程序注销时,它不会从他们进行身份验证的社交网站注销,这是危险的。
我想添加一个功能,该功能将破坏两个地方的会话,即我的应用程序和相应的社交网站。我怎么做?可以使用omniauth gems
我目前正在使用的吗?或者是否有替代 gem/API 可以实现此目的?
如何使用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
activerecord ×1
associations ×1
autoload ×1
facebook ×1
imagemagick ×1
omniauth ×1
paperclip ×1
postgresql ×1
rspec ×1
rspec-rails ×1
ruby ×1
sublimetext2 ×1
twitter ×1