在我的rails应用程序中,我有一个ajax请求到服务器,以存储一些数据.这曾经没有任何问题,但现在我收到一个错误:
ActionController::UnknownFormat (ActionController::UnknownFormat):
app/controllers/reservations_controller.rb:45:in `create'
Run Code Online (Sandbox Code Playgroud)
以下是控制器和我的javascript文件,其中我声明数据类型是JSON
class ReservationController < ApplicationController
respond_to :html, :json
def create
...
respond_to do |format|
if @reservation.save
format.html do
redirect_to '/'
end
format.json { render json: @reservation.to_json }
else
render 'new'
end
end # respond_to
end # create
end # ReservationController
Run Code Online (Sandbox Code Playgroud)
function.js
$.ajax({
url: url_link,
dataType: 'json',
type: 'POST',
data: dataToSend
})
Run Code Online (Sandbox Code Playgroud)
完整的错误日志是:
Completed 406 Not Acceptable in 45ms
ActionController::UnknownFormat (ActionController::UnknownFormat):
app/controllers/bookings_controller.rb:45:in `create'
Rendered /Users/tiagovieira/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.5ms)
Rendered /Users/tiagovieira/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.8ms)
Rendered /Users/tiagovieira/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms)
Rendered /Users/tiagovieira/.rvm/gems/ruby-2.0.0-p451/gems/actionpack-4.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout …Run Code Online (Sandbox Code Playgroud) 我试图从config/secrets.yml文件中访问我的密钥.
secrets.yml:
development:
secret_key_base: laksjfla...alskdfjlaksjdflaksd
other_secret: password
Run Code Online (Sandbox Code Playgroud)
Rails控制台:
$ rails c
> Rails.application.secrets
> => {:secret_key_base=>"laksjfla...alskdfjlaksjdflaksd"}
Run Code Online (Sandbox Code Playgroud)
我在哪里other_secret?!
params在测试Rails辅助方法时设置哈希值?我想设置params[:search] = 'my keyword search'在我的帮助方法中使用,然后从it示例块中调用它.
require 'rails_helper'
describe BooksHelper do
describe "#page_title_helper" do
let(:params) { {search: 'my keyword search'} }
it "should read the params hash" do
expect(helper.params[:search]).to eq "my keyword search"
end
end
end
Run Code Online (Sandbox Code Playgroud)
BooksHelper
def title_helper
if params[:search]
"Books related to #{params[:search]}"
else
"All Books"
end
end
end
Run Code Online (Sandbox Code Playgroud) 我在访问/users/newRails 4 时遇到错误Unable to autoload constant UsersController, expecting /app/controllers/users_controller.rb to define it.
这是控制器代码
class UserController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user]).permit(:email, :password,:password_confirmation)
respond_to do |format|
if @user.save
format.html { redirect_to new_user_path, notice: 'User was successfully created.' }
format.json { render action: 'show', status: :created, location: @user }
else
format.html { render action: 'new' }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的观点new.html.erb是: …
出于我无法控制的原因,我无法在当前项目中使用RSpec进行测试.我正在尝试测试Devise重置密码,我似乎无法想出一些有用的东西.
这是我到目前为止所拥有的:
require 'test_helper'
class ResetPasswordTest < ActionDispatch::IntegrationTest
setup do
@user = users(:example)
end
test "reset user's password" do
old_password = @user.encrypted_password
puts @user.inspect
# This assertion works
assert_difference('ActionMailer::Base.deliveries.count', 1) do
post user_password_path, user: {email: @user.email}
end
# puts @user.reset_password_token => nil
# Not sure why this doesn't assign a reset password token to @user
patch "/users/password", user: {
reset_password_token: @user.reset_password_token,
password: "new-password",
password_confirmation: "new-password",
}
# I get a success here, but I'm not sure why, since reset password …Run Code Online (Sandbox Code Playgroud) 我正在努力解决这个错误没有提供API密钥.使用"Stripe.api_key ="设置API密钥.按照Stripe的指南逐步执行后,您可以在Rails应用程序中从Stripe Web界面生成API密钥.
从我看来,一切看起来都很好,但它不断回归那个通知.有什么建议?
收费控制器:
class ChargesController < ApplicationController
def new
end
def create
# Amount in cents
@amount = 500
customer = Stripe::Customer.create(
:email => 'example@stripe.com',
:card => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @amount,
:description => 'Rails Stripe customer',
:currency => 'usd'
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to charges_path
end
end
Run Code Online (Sandbox Code Playgroud)
配置/初始化/ stripe.rb
Rails.configuration.stripe = {
:publishable_key => ENV['pk_test_KEY'],
:secret_key => ENV['sk_test_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
Run Code Online (Sandbox Code Playgroud)
终端跟踪在2014-12-12 22:15:08 +0100开始POST"/ …
我正在使用Rails 4.0.0和Ruby 2.0.0.我Post(在博客文章中)模型与具有用户的user_name,first_name,last_name的组合的用户相关联.我想迁移数据,以便帖子通过外键与用户关联,这是用户的ID.
我在posts表中有大约1100万条记录.
我正在运行以下代码来使用Linux服务器上的rake任务来迁移数据.但是,我的任务一直被服务器"杀死",可能是由于rake任务,特别是下面的代码,消耗了太多内存.
我发现降低batch_size到20并增加sleep(10)以sleep(60)允许任务运行更长时间,更新更多记录而不被杀死,但需要更多时间.
如何针对速度和内存使用优化此代码?
Post.where(user_id: nil).find_in_batches(batch_size: 1000) do |posts|
puts "*** Updating batch beginning with post #{posts.first.id}..."
sleep(10) # Hopefully, saving some memory usage.
posts.each do |post|
begin
user = User.find_by(user_name: post.user_name, first_name: post.first_name, last_name: post.last_name)
post.update(user_id: user.id)
rescue NoMethodError => error # user could be nil, so user.id will raise a NoMethodError
puts "No user found."
end
end
puts "*** Finished batch."
end
Run Code Online (Sandbox Code Playgroud) 通过反复试验,我确定从Heroku的heroku-16堆栈升级到heroku-18堆栈将需要我在Rails应用程序中更新Puma。
以下是无法为puma gem构建本机扩展的信息。您能解释为什么v3.7之前的puma gem版本会发生这种故障吗?
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory:
/tmp/build_893b3955637fcd96d49136f0c3564c51/vendor/bundle/ruby/2.4.0/gems/puma-3.6.2/ext/puma_http11
/tmp/build_893b3955637fcd96d49136f0c3564c51/vendor/ruby-2.4.5/bin/ruby -r
./siteconf20190110-284-13d7ke9.rb extconf.rb
checking for BIO_read() in -lcrypto... yes
checking for SSL_CTX_new() in -lssl... yes
checking for openssl/bio.h... yes
creating Makefile
current directory:
/tmp/build_893b3955637fcd96d49136f0c3564c51/vendor/bundle/ruby/2.4.0/gems/puma-3.6.2/ext/puma_http11
make "DESTDIR=" clean
current directory:
/tmp/build_893b3955637fcd96d49136f0c3564c51/vendor/bundle/ruby/2.4.0/gems/puma-3.6.2/ext/puma_http11
make "DESTDIR="
compiling http11_parser.c
In file included from ext/puma_http11/http11_parser.rl:7:0:
ext/puma_http11/http11_parser.rl: In function ‘puma_parser_execute’:
ext/puma_http11/http11_parser.rl:111:17: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
ext/puma_http11/http11_parser.rl: At top level:
cc1: warning: unrecognized …Run Code Online (Sandbox Code Playgroud) <div data-role="fieldcontain" style="font-size: 84%" > <!-- style="width: 48% ; float: right" -->
<fieldset data-role="controlgroup" data-type="horizontal" data data-mini="false" data-theme="b" style="width: 98%; " data-corners="false"> <!-- strength -->
<legend style="text-align: center ; ">????</legend>
<input type="radio" name="radio-strength" id="radio-view-a" value="????" data class="blabla" style="background-color: #BF8F54;"/>
<label for="radio-view-a" >????: 10.50 ₪</label>
<input class="blabla" type="radio" name="radio-strength" id="radio-view-b" value="??????" checked="checked"/>
<label for="radio-view-b" >??????: 6.30 ₪</label>
<input class="blabla" type="radio" name="radio-strength" id="radio-view-c" value="???" />
<label for="radio-view-c" >???: 5.70 ₪</label>
</fieldset>
</div>
Run Code Online (Sandbox Code Playgroud)
Jquery Mobile Radio按钮:在上面的例子中,我设法通过试验和错误来适应水平单选按钮.
怎么能在代码中完成???
ruby ×3
activerecord ×1
ajax ×1
devise ×1
heroku ×1
minitest ×1
puma ×1
respond-to ×1
rspec ×1
rspec-rails ×1
rspec3 ×1
rubygems ×1