我浏览了关于这个主题的所有SO问题和答案,但我仍然无法使我的场景工作.我想在选择下拉菜单选项时触发单击按钮操作; 看起来很简单,应该与AJAX非常相似.
以下是我的代码的相关摘录:
<%= form_for(@test, :html => {:id => "form_id", :name => "MyForm", :remote => "true"}) do |form| %>
<%= form.label "Menu1" %>
<%= form.select (:Menu1, [["Option1","value1"],["Option2","value2"]], :html_options=>{:onChange=>"javascript: this.form.apply_button_name.click();"}) %>
<!-- more select menus and text fields here -->
<div class="actions">
<%= form.submit "Apply", :name => "apply_button_name", :remote => "true" %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我使用":remote =>"true"对于表单和按钮都是如此,因为这是让AJAX正常工作的唯一方法.在浏览了一些SO答案之后,我也试过了没有明确的"html_options"和"javascript:"建议,但这没有帮助.我也试过onSelect,而onClick而不是onChange,但仍然没有运气.
生成的HTML如下:
Menu1
<select id="test_Menu1" name="test[Menu1]"><option value="value1">Option1</option>
<option value="value2" selected="selected">Option2</option></select>
Run Code Online (Sandbox Code Playgroud)
如您所见,HTML代码中没有onChange事件处理程序; 为什么?任何人都在看我做错了什么?
谢谢你的帮助.
我希望我的rails服务器在每次重启后自动启动,所以我将以下内容添加到我的.bashrc文件中
rvm use 1.9.2
cd /home/user/myapp
rails server
Run Code Online (Sandbox Code Playgroud)
这样,服务器在重新启动后永远不会自动启动,我必须手动启动它.
此外,当我登录启动服务器时,我看到以下消息
Using /usr/local/rvm/gems/ruby-1.9.2-p290
/usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby: symbol lookup error: /usr/local/rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.4/lib/sqlite3/sqlite3_native.so: undefined symbol: sqlite3_initialize
Run Code Online (Sandbox Code Playgroud)
因此,我需要在每次重启后使用"gem install sqlite3"安装sqlite3后我自己做超级用户,然后才能启动rails服务器而不会出现问题.
$ cat /etc/*-release
CentOS release 5.8 (Final)
$ rails -v
Rails 3.1.1
$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?谢谢
好的,在我解决了这个问题之后,现在我有了这个新的问题,我似乎不太明白。
这是我的观点和 Javascript 代码:
<script language="javascript" type="text/javascript">
function getConfig(){
$.ajax({
url: "<%= get_config_projects_url %>",
data: {
id: <%= @project.id %>,
unit_mgt_address: $('.unit_mgt_address_class').val(),
}
});
}
</script>
<%= form_for(@project) do |f| %>
<input type=button onClick="getConfig()"/>
<div class="field">
<%= f.label :Unit Management Address %><br>
<%= f.text_field :UnitMgtAddress, :class=>'unit_mgt_address_class' %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我的控制器
class ProjectsController < ApplicationController
before_action :set_project, only: [:show, :edit, :update, :destroy]
<many other methods go here>
# GET …Run Code Online (Sandbox Code Playgroud) 我尝试通过 Postman 向设备的 Restful API 发送 HTTP Get,它工作正常,返回了我期望的所有文本。Postman 建议该请求的 Ruby 代码如下:
url = URI('http://192.168.1.5/rest/op/BD1FD3D893613E79')
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request.basic_auth 'admin', 'admin'
request["accept"] = 'Application/json'
response = http.request(request)
puts response.read_body
Run Code Online (Sandbox Code Playgroud)
但是当我在代码中尝试这样做时,它返回了截断的响应(缺少行),并且我必须多次重新发送相同的 Get 才能获取整个文本响应响应。
上面的 Ruby 代码中是否缺少任何内容导致响应被截断?
更新1
我试过这个
url = URI('http://192.168.1.5/rest/op/BD1FD3D893613E79')
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request.basic_auth 'admin', 'admin'
request["accept"] = 'Application/json'
response = http.request(request)
puts response.read_body
response.read_body do |segment|
puts segment.to_s
end
Run Code Online (Sandbox Code Playgroud)
并产生了这个错误
IOError (Net::HTTPOK#read_body called twice):
Run Code Online (Sandbox Code Playgroud)
更新2
我试过这个
1073 url = URI('http://192.168.1.5/rest/op/BD1FD3D893613E79')
1074 http …Run Code Online (Sandbox Code Playgroud)