我刚刚升级到Rails 4.1.
我之前在控制器动作中有以下内容,它完美地运行.
respond_to do |format|
format.html { render html: @user, layout: "fullscreen" }
end
Run Code Online (Sandbox Code Playgroud)
这在Rails 4.1中不起作用,页面只是呈现对象 #<User:0x007fb087429a70>
按如下方式编辑控制器可修复此错误.
respond_to do |format|
format.html
end
Run Code Online (Sandbox Code Playgroud)
在Rails 4.1中设置布局的正确方法是什么.我在文档中找不到这个问题.
我正在尝试按照本指南在Rails 3.2应用程序上设置jquery文件上传.
一切都很完美,但是当我点击"开始上传"时,我在Chrome的控制台中看到一个错误:
POST http://testapp.dev/photos 500 (Internal Server Error)
Run Code Online (Sandbox Code Playgroud)
在我得到的日志中:
ActionView::MissingTemplate (Missing template photos/create, application/create with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}.
Run Code Online (Sandbox Code Playgroud)
我用一把细齿梳子经过了控制器,但是我无法解决导致这个错误的原因或者为什么要寻找创建部分.调试这个的系统方法是什么?
谢谢
编辑
我的控制器动作如下所示:
class PhotosController < ApplicationController
def index
@photos = Photo.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @photos }
format.json { render :json => @photos.collect { |a| a.to_jq_upload }.to_json }
format.js { render :json => @photos.collect { |a| a.to_jq_upload }.to_json }
end
end
def show
@photo = …Run Code Online (Sandbox Code Playgroud) 如何在使用Bootstrap的"预先"自动完成时为下拉列表中的活动项目设置自定义背景颜色?
一个小问题,但一个让我感到沮丧几个小时的问题!
我通过bootstrap-sass gem在Rails 3.2应用程序中使用Twitter Bootstrap.
我认为这是由下拉菜单样式控制的,但是
$dropdownLinkBackgroundHover: $customColor;
Run Code Online (Sandbox Code Playgroud)
不起作用.
我也尝试了一种更具体的方法
.typeahead .active > a, .typeahead .active > a:hover { background-color: $customColor; }
Run Code Online (Sandbox Code Playgroud)
但这似乎也不起作用.
我在俯瞰什么?或者我的修复工作是否有效,问题出在其他地方?
ruby-on-rails twitter-bootstrap twitter-bootstrap-rails bootstrap-sass
在网页上,我正在渲染图像集.有些图像是纵向,有些是横向,都比所需的渲染尺寸大.
我想在一个整齐,大小合适的方形缩略图库中显示这些图像.
我怎么能这样只使用CSS?
如果可能的话,我想避免使用JavaScript库.我不需要选择要显示的图像的一部分,只需选择任何中心方形区域.
我已经在其他地方看到过这个问题,但还没有找到一个似乎适用于所有方向的答案(例如,肖像可能会被正确裁剪/调整大小,而景观则没有).
我最近在新机器上设置了Rails开发环境.我现在正在尝试运行应用程序的测试套件,但不断收到数据库错误.
Failure/Error: user = FactoryGirl.create(:user)
PG::ConnectionBad:
FATAL: database "test-db" does not exist
Run Code Online (Sandbox Code Playgroud)
我的database.yml文件设置正确.我已经运行psql -l并且test-db确实存在,并且通过运行rake db:create我收到"已存在"消息的位置来确认.
我已经运行rake db:migrate和rake:test:prepare,但错误依然存在.
我的测试设置如下
group :test do
gem 'rspec-rails'
gem 'factory_girl_rails'
gem 'capybara'
gem 'guard-rspec'
gem 'spork-rails'
gem 'guard-spork'
end
Run Code Online (Sandbox Code Playgroud)
我对开发数据库没有任何问题.
为什么我得到一个db不存在错误,我该怎么做才能调试这个?
在 WordPress 主题中,我显示来自外部 JSON API 的信息。如何缓存此数据以缩短页面加载时间。
我有一个 jQuery 函数
var url = 'http://my.api.com/'
$.getJSON(url)
.done( function(data) {
#display this data
})
.fail( function( jqXHR, textStatus, error) {
#handle errors
});
Run Code Online (Sandbox Code Playgroud)
jQuery 是否提供缓存这些请求的方法?或者我应该以某种方式在 WordPress 中处理这个问题(也许将响应写入服务器上的 JSON 文件)?
在Rails中,我可以从CDN提供资源,并设置多个CNAMES以便同时加载.
例如,我放入config.action_controller.asset_host = "http://assets-%d.myappp.com"了config/environments/production.rb,然后我的资产就从中提供了
http://assets-0.myapp.com
http://assets-1.myapp.com
http://assets-2.myapp.com
Run Code Online (Sandbox Code Playgroud)
这很棒,并且大大增加了页面加载时间.
我的应用程序包含许多通过Carrierwave处理的用户生成的图像.我想对这些图像应用相同的方法.我已经设置了CDN,在config/initializers/carrierwave.rb中我添加了以下内容:
config.asset_host = "http://images.myapp.com"
现在我有两个问题:
%d
方法似乎不适用于初始化程序.Miniprofiler指示我的Rails应用程序在每个页面上进行大量数据库查询。问题似乎是布局中包含的页首横幅模块。
该应用程序如下所示:
#application_controller.rb
before_filter :initialize_leaderboard
def initialize_leaderboard
@leaderboard_users ||= User.monthly_leaderboard
end
#user.rb
def self.monthly_leaderboard
User.includes(:events).sort_by(&:events_last_month).reverse
end
def events_last_month
@events_last_month ||= events.where( created_at: Date.today.beginning_of_month-1.month..Date.today.end_of_month-1.month ).size
end
#application.html.erb
...
<% unless @leaderboard_users.blank? %>
<% cache ["sidebar_leaderboard", @leaderboard_users] do %>
...html
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
在日志和miniprofiler输出中,我看到了events_last_month每个用户的查询。这不是所希望的,并且让我质疑我对所有这些工作原理的理解。我可以这样吗?
events_last_month查询必须源自initialize_leaderboardapplication_controller.rb中的
方法。但是,我知道使用||=会User.monthly_leaderboard为后续请求缓存方法的响应
。为什么在每个页面视图中都调用它?典型的 Rails 更新操作如下所示
def update
respond_to do |format|
if @object.update(object_params)
# success results
else
format.html { render :edit }
end
end
end
Run Code Online (Sandbox Code Playgroud)
因此,我希望,如果更新不成功,用户将最终到达 path /objects/:id/edit。
为什么是实际路径/objects/:id,但显示编辑表单?
这是正常行为,还是此应用程序中发生了奇怪的事情?
#routes.rb
devise_for :users
resources :objects do
resources :children, only: [:index, :new, :create]
member do
get :customaction
end
end
#ability.rb
can :create, Object
can :manage, Object, id: @user.object_id
cannot [:index, :destroy], Object
Run Code Online (Sandbox Code Playgroud) 我正在尝试测试 rake 任务,并得到一个非常奇怪的结果。
expected: 1 time with arguments:
received: 2 times with arguments:
Run Code Online (Sandbox Code Playgroud)
有问题的代码只调用该方法一次,我无法弄清楚额外的调用来自哪里。
这是我第一次为 rake 任务编写测试,所以我可能忽略了一些明显的事情。下面的方法看起来合理吗?
#spec/lib/scheduled_tasks_spec.rb
require 'rails_helper'
require 'rake'
MyApp::Application.load_tasks
load File.join(Rails.root, 'lib', 'tasks', 'scheduled_tasks.rake')
RSpec.describe "scheduled rake tasks" do
describe 'Initialization' do
let!(:team) { create :team }
let!(:admin) { create :user, role: 'admin' }
it 'should call the GeneratePdf job for each team' do
expect(GenerateReportJob).to(
receive(:perform_later).with(
[admin], team
).once.and_call_original
)
Rake::Task['scheduled_tasks:generate_reports'].invoke
end
end
end
Run Code Online (Sandbox Code Playgroud)
我正在测试的 rake 任务非常简单
namespace :scheduled_tasks do
task generate_reports: :environment do
admins = …Run Code Online (Sandbox Code Playgroud)