我在Ruby中创建一个哈希,并希望以正确的格式将其写入JSON文件.
这是我的代码:
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
fJson = File.open("public/temp.json","w")
fJson.write(tempHash)
fJson.close
Run Code Online (Sandbox Code Playgroud)
以下是生成的文件的内容:
key_aval_akey_bval_b
Run Code Online (Sandbox Code Playgroud)
我正在使用Sinatra(不知道是什么版本)和Ruby v 1.8.7.
如何以正确的JSON格式将其写入文件?
我正在使用带有Ruby 1.8.7的Sinatra.我是网络开发的新手,所以我并不完全理解获取和发布,但我得到了一些工作.接下来我需要知道的是如何在帖子中查询某些属性的params.在我的主文件中,我有这个代码:
get "/plan_design" do
erb :plan_design
end
post "/plan_design" do
# do stuff with params
end
Run Code Online (Sandbox Code Playgroud)
在plan_design.erb中,我有:
<% if (hash[paramTitle].kind_of?(String)) %>
<div> <input class="planDesignAsset" name="<%= paramTitle %>" value="<%= hash[paramTitle] %>" ></input> </div>
<% else %>
<div> <input class="planDesignAssetNum" name="<%= paramTitle %>" value="<%= hash[paramTitle] %>" ></input> </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在为非字符串使用不同的类.在post,我需要问一下params[some_key],你是哪种班级?然后我可以相应地对待每个参数.这有意义吗?
我在使用1.8.7后安装了Ruby 1.9.2,因为我需要一个功能.我曾经调用过很多这样的方法:
do_something (arg0, arg1)
Run Code Online (Sandbox Code Playgroud)
使用1.9.2,我得到以下错误, syntax error, unexpected ',', expecting ')'修复似乎是:
do_something arg0, arg1
Run Code Online (Sandbox Code Playgroud)
但这可能需要几个小时才能解决所有问题.有没有解决的办法?为什么一开始就是错误?谢谢
我能够按名称找到我的选择元素,但是我找不到与之关联的选定值.
这是我的代码如下:
<select name="a[b]" onchange='mySelectHandler("a[b]")'>
<option value='Choice 1'>Choice 1</option>
<option value='Choice 2'>Choice 2</option>
</select>
Run Code Online (Sandbox Code Playgroud)
然后,在我使用的处理程序中:
function mySelectHandler(name){
var mySelect = $('select[name=' + name)
// try to get selected value
// alert ("selected " + mySelect.val())
console.log("object "+ mySelect.toSource());
}
Run Code Online (Sandbox Code Playgroud)
我打印到日志的结果是:
object({length:0,prevObject:{0:({}),context:({}),length:1},context:({}),selector:"select [name = a [b]"})
关于如何做到这一点的任何想法?
该项目在Ruby 1.9.2中运行良好,但我想使用1.9.3.
这条线在1.9.2中运行良好:
o, e, s = Open3.capture3("echo a; sort >&2", :stdin_data=>"foo\nbar\nbaz\n")
Run Code Online (Sandbox Code Playgroud)
但是在1.9.3中,我得到了
uninitialized constant ConfigureController::Open3
我必须安装模块,还是什么?谢谢!
在Sinatra,我可以测试some_object.class.name =="Hash".现在,在提交之后,我必须测试它,加上=="ActiveSupport :: HashWithIndifferentAccess",以使我的代码能够正常工作.为什么会这样,我是否必须更新发生比较的所有地方,或者是否有更简单的方法?谢谢
我见过类似的问题,但我还不清楚.我不希望"n1"命名空间出现在输出文件中节点的属性中.但我必须在xslt文件中创建"n1"命名空间才能使xpath正常工作.谢谢.
XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:n1="http://www.spicefactory.org/parsley"
xmlns="http://www.spicefactory.org/parsley"
>
<xsl:output method="xml" indent="no"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="n1:object[@type='mytype1']">
<object type="mytype2">
<xsl:apply-templates select="node()"/>
</object>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
从OUTPUT XML文件中获取:
<object type="mytype2" xmlns:n1="http://www.spicefactory.org/parsley">
Run Code Online (Sandbox Code Playgroud) 我需要预先填充表单,以便用户可以编辑他们之前创建的博客.我正在寻找在React中做到这一点的最佳实践方法.我目前通过props将值传递给组件,然后将state属性设置为等于props属性,但我已经读过这是一个反模式.我理解'事实的来源'.但是有什么更好的方法呢?我现在不想使用redux-form.下面是我的标题组件,下面是我从父母那里调用它的方式.这一切都有效,但有没有更好的方法,以避免将州属性设置为道具属性?
import React, { Component, PropTypes} from 'react';
export default class DocumentTitle extends Component{
constructor(props) {
super(props);
this.state = {inputVal:this.props.publication.document_title}
this.handleChange = this.handleChange.bind(this)
}
handleChange(event) {
this.setState({inputVal: event.target.value});
}
componentWillReceiveProps(nextProps){
this.setState({inputVal: nextProps.publication.document_title})
}
render (){
return (
<div >
<label>Title</label>
<div>
<input onChange={this.handleChange} id="doc_title" type="text" value={this.state.inputVal}/>
</div>
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
来自父母的电话:
<DocumentTitle publication={this.props.publication} />
Run Code Online (Sandbox Code Playgroud) 对不起,如果这已被覆盖.寻找一个使用Sinatra的AJAX示例,专门用于获取部分并将其应用于DOM中的标记,来自javascript按钮处理程序.谢谢
有人告诉我,如果我只有一个"东西",比如家(不是多个家),我应该使用资源:家,而不是资源:在routes.rb中.但是当我查看路线时,POST功能似乎想要家园#create.复数为何?我想命名我的控制器home_controller,类是HomeController.我必须将它们命名为复数吗?