Ruby on rails对模型,视图和控制器名称使用单数和复数约定.这非常好,因为可能有一个名为call的模型user和一个名为的控制器users.这适用于几乎每个单词,例如用户,树,书,所以每个单词只有一个s来形成复数.
然而,那些不只需要用s来形成复数的单词,比如用字母"y"结尾的单词呢?例如,城市和城市?铁轨是否知道两者的区别还是我需要写city和citys,即使它在语法上是错误的?
如何将用户数输入从11,5转换为11.5?
我尝试了以下作为回调:
before_validation :comma_to_delimiter
def comma_to_delimiter
self.price.to_s.gsub(',', '.').to_f
end
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我希望用户能够输入他想要的任何分隔符 - 当前,当用户使用逗号而不是点时,应用程序会抛出错误.
我正在使用Angular 2,SystemJS和Karma构建一个Web应用程序进行测试.
我正在尝试在测试中加载节点模块ngrx/store:
import {
it, describe, expect, beforeEach, inject
} from 'angular2/testing';
import { Store } from '@ngrx/store';
describe('Graphs store', () => {
let graphs;
beforeEach(inject([Store], (store: Store<any>) => {
graphs = store.select('graphs');
}));
it('works', () => {
// expect graphs to do something...
});
});
Run Code Online (Sandbox Code Playgroud)
但是,我的测试失败并显示以下消息:
404: /@ngrx/store
Chrome 48.0.2564 (Mac OS X 10.11.3) ERROR
Error: XHR error (404 Not Found) loading http://localhost:9876/@ngrx/store
Run Code Online (Sandbox Code Playgroud)
我在dev中也遇到了同样的问题,结果发现SystemJS不知道在哪里可以找到@ngrx/store.为了解决这个问题,我这样做了:
System.config({
packages: {
src: {
format: 'register',
defaultExtension: 'js'
} …Run Code Online (Sandbox Code Playgroud) 我在jQuery ajax中遇到一个简单的回调函数问题.谷歌不会帮助,堆栈溢出也不会,所以我想这可能不是特定的东西,而是我无知的东西.对我来说代码看起来应该是这样的.
那么,这是代码:
function sendMessage(message)
{
//Establish connection to php script
$.ajax({
type: 'POST',
url: 'action/chat/test.php',
success: function(feedback){
alert(feedback);
}
}).error(function(){
//Do some error handling here
});
}
Run Code Online (Sandbox Code Playgroud)
在test.php中它简单地说
<?php
echo "called";
?>
Run Code Online (Sandbox Code Playgroud)
据我所知,"被叫"应该被警告 - 但事实并非如此.我已经检查过调用函数sendMessage()(现在参数消息无关紧要).
有谁有想法吗?
我们都在那里 - 考虑以下示例 - 首先,客户说"每个用户只有一个个人资料图片",所以我们在用户表中添加一个字段 - 半年后,需求发生变化,用户实际上需要有n张个人资料图片.
现在,这似乎只有在你添加一个新表如user_pictures来处理新的基数1:n而不是1:1时才有可能.通常这会变得非常复杂.每当我遇到这个问题时,我想知道为什么我们不使用我们可以想到的所有三个维度.二维表的局限性有点不完整 - 如果,指的是我们的问题与个人资料图片再次,用户表中的图片字段具有深度,并且该深度使该字段成为同时完美地表示基数1:1和1:n的数组.
表字段将简单地成为数组并自动支持两个基数 - 这不是什么?至少我会用它.那里有类似的东西吗?
我正在开发一个rails 3.2应用程序,用户可以使用它下载pdfs.我很喜欢使用rspec和shoulda匹配器进行测试驱动开发,但是我对此感到茫然.
我的控制器里面有以下代码:
def show_as_pdf
@client = Client.find(params[:client_id])
@invoice = @client.invoices.find(params[:id])
PDFKit.configure do |config|
config.default_options = {
:footer_font_size => "6",
:encoding => "UTF-8",
:margin_top=>"1in",
:margin_right=>"1in",
:margin_bottom=>"1in",
:margin_left=>"1in"
}
end
pdf = PDFKit.new(render_to_string "invoices/pdf", layout: false)
invoice_stylesheet_path = File.expand_path(File.dirname(__FILE__) + "/../assets/stylesheets/pdfs/invoices.css.scss")
bootstrap_path = File.expand_path(File.dirname(__FILE__) + "../../../vendor/assets/stylesheets/bootstrap.min.css")
pdf.stylesheets << invoice_stylesheet_path
pdf.stylesheets << bootstrap_path
send_data pdf.to_pdf, filename: "#{@invoice.created_at.strftime("%Y-%m-%d")}_#{@client.name.gsub(" ", "_")}_#{@client.company.gsub(" ", "_")}_#{@invoice.number.gsub(" ", "_")}", type: "application/pdf"
return true
end
Run Code Online (Sandbox Code Playgroud)
这是相当简单的代码,它所做的就是配置我的PDFKit并下载生成的pdf.现在我想测试整个事情,包括:
我尝试过以下方法:
controller.should_receive(:send_data)
Run Code Online (Sandbox Code Playgroud)
但这给了我
Failure/Error: controller.should_receive(:send_data)
(#<InvoicesController:0x007fd96fa3e580>).send_data(any args)
expected: 1 time
received: …Run Code Online (Sandbox Code Playgroud) 这只是关于最佳实践的问题.
想象一下,你有一个带一个参数的方法.此参数是对象的id.理想情况下,我希望能够直接传递对象的id,或者只传递对象本身.
这样做最优雅的方法是什么?
我想出了以下内容:
def method_name object
object_id = object.to_param.to_i
### do whatever needs to be done with that object_id
end
Run Code Online (Sandbox Code Playgroud)
所以,如果参数已经是一个id,它几乎保持不变; 如果它是一个对象,它就会得到它的id.
这有效,但我觉得这可能会更好.此外,to_param返回一个字符串,在某些情况下可以返回一个"真实"字符串(即"字符串"而不是"2"),因此在调用to_i时返回0.例如,当为类使用友好id gem时,可能会发生这种情况.
活动记录提供相同的功能.如果你说:无所谓:
Table.where(user_id: User.first.id) # pass in id
Run Code Online (Sandbox Code Playgroud)
要么
Table.where(user_id: User.first) # pass in object and infer id
Run Code Online (Sandbox Code Playgroud)
他们是如何做到的呢?实现这种效果的最佳方法是什么?
我有一个关于mysql提交和事务的问题.
我有几个执行mysql查询的php语句.
我只是说以下内容吗?
mysql_query("START TRANSACTION");
//more queries here
mysql_query("COMMIT");
Run Code Online (Sandbox Code Playgroud)
这到底是做什么的?它有什么用?对于更新,删除和插入,我还发现这可以阻止其他查询读取:
mysql_query("LOCK TABLES t1 WRITE, t2 WRITE");
//more queries here
mysql_query("UNLOCK TABLES t1, t2");
Run Code Online (Sandbox Code Playgroud)
这会阻止任何性质的其他查询或只写/选择吗?
另一个问题:假设一个查询正在运行并阻止其他查询.另一个查询尝试访问被阻止的数据 - 并且它看到它被阻止.它是如何进行的?是否等到数据再次被解除阻塞并重新执行查询?它是否失败并需要重复?如果是这样,我该怎么检查?
非常感谢!
丹尼斯
我很沮丧,因为我花了好几个小时 - 这里还有其他线索,但是没有一个解决了我的问题!
我只想在我的网站www.posti.sh上实现类似fb的按钮 - 我想知道为什么它不起作用?
这是我使用的代码,根据https://developers.facebook.com/docs/reference/plugins/like/一步一步的教程:
<div id="fb-root"></div> (directly after the opening body tag)
Run Code Online (Sandbox Code Playgroud)
和
<div class="fb-like" data-href="http://www.posti.sh" data-send="true" data-width="450" data-show-faces="true"></div>
Run Code Online (Sandbox Code Playgroud)
我希望它在哪里.
我还在头部添加了相应的meta标签.
任何人都知道为什么它不起作用?
谢谢!!
丹尼斯
更新1
我使用了fb调试工具https://developers.facebook.com/tools/debug,它只说og图像不够大 - 我想这不应该是个问题吗?
中ts/app.ts,有:
function foo() {
console.log('Hello Word');
}
Run Code Online (Sandbox Code Playgroud)
它使用 Webpack 成功编译bundle.js并加载:
<script src="dist/bundle.js"></script>
Run Code Online (Sandbox Code Playgroud)
如何foo从浏览器控制台执行?
> foo()
Uncaught ReferenceError: foo is not defined
Run Code Online (Sandbox Code Playgroud) ajax ×1
angular ×1
arrays ×1
callback ×1
commit ×1
database ×1
delimiter ×1
dimensions ×1
grammar ×1
javascript ×1
jquery ×1
karma-runner ×1
mysql ×1
pdf ×1
pdfkit ×1
php ×1
rspec ×1
ruby ×1
sql ×1
systemjs ×1
transactions ×1
typescript ×1
validation ×1
webpack ×1
wkhtmltopdf ×1