Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Ajax的非常简单的单页rails有什么问题?_Javascript_Ruby On Rails_Ajax_Ruby On Rails 3.2 - Fatal编程技术网

Javascript 使用Ajax的非常简单的单页rails有什么问题?

Javascript 使用Ajax的非常简单的单页rails有什么问题?,javascript,ruby-on-rails,ajax,ruby-on-rails-3.2,Javascript,Ruby On Rails,Ajax,Ruby On Rails 3.2,想要创建一个单页网站,有一个输入文本字段,用户将在其中输入一个数字,然后提交按钮将在同一页上输出一些字符串,基于我用Ruby编写的算法 我已经创建了controller main_pages_controller.rb,它具有“home”作为与“home.html.erb”视图关联的方法,以及显示输出“_goclick.html.erb”的部分。在主页home.html.erb中,我输入了以下代码: Number: <input type="text" name="input_number

想要创建一个单页网站,有一个输入文本字段,用户将在其中输入一个数字,然后提交按钮将在同一页上输出一些字符串,基于我用Ruby编写的算法

我已经创建了controller main_pages_controller.rb,它具有“home”作为与“home.html.erb”视图关联的方法,以及显示输出“_goclick.html.erb”的部分。在主页home.html.erb中,我输入了以下代码:

Number: <input type="text" name="input_number">
<%= link_to "click here", {:action=>"go_convert"}, {:remote => true, :id=>"clk"} %>
<div id="allclick">
<%= render :partial => 'goclick' %>
</div>
我还使用此代码在同一个视图文件夹下添加了一个js文件(go_convert.js.erb)

$("#allclick").html("<%= escape_javascript(render(:partial => "goclick")) %>");
因此,我还将此路由添加到我的路由文件中

get "main_pages/go_convert"
现在,当单击“单击此处”链接时,没有发生任何事情,没有输出,没有页面重新加载,没有javascript错误。。 我做错了什么?
如果使用rails 3.2.12和Ruby 1.9.3,您应该创建一个javascript脚本,该脚本将由控制器操作返回,如下所示:

<%= form_tag url_for(action: "show"), remote: true do %>
  Number: <input type="text" name="input_number">
  <%= submit_tag "click here" %>
<% end %>
<div id="allclick">
  <%= render :partial => 'goclick' %>
</div>
在控制器操作中

def your_action
  @result = (your algorithm output)
  respond_to do |format|
    format.js { render :action => "result" }
  end
end
在文件result.js.erb中

$('#allclick').empty().append('<%= escape_javascript( @result.to_s ) %>');
$('allclick').empty().append('');

result.js脚本将作为对ajax请求的响应呈现

根据您的路线,我认为这是一个打字错误,您的主页面\u控制器。rb应该是主页面\u控制器。rb

为什么使用链接到而不是表单?除非您手动处理,否则我认为“text_number”输入字段值根本不会被发送

也许这就是原因?因此,它呈现局部,没有任何与初始条件相同的结果

无论如何,请尝试使用form remote,如下所示:

<%= form_tag url_for(action: "show"), remote: true do %>
  Number: <input type="text" name="input_number">
  <%= submit_tag "click here" %>
<% end %>
<div id="allclick">
  <%= render :partial => 'goclick' %>
</div>

编号:
'单击“%”

另外,您得到的“未找到”错误可能是使用GET请求链接到的结果,通过使用默认情况下使用POST请求的表单,您根本不需要添加GET路由

很抱歉,这是问题中的一个输入错误,文件名实际上是main\u pages\u controller.rbI在我的问题中没有说我已经有了一个要阻止的respond\u,请检查编辑的问题。但它和你的不同,(我从一些网络资源中复制并粘贴了我的)。不管怎样,我现在用的是你的积木。我已经有了一个go_convert.js.erb文件,其中包含了我在问题中提到的js代码,我应该创建另一个类似于你提到的js文件,还是应该替换现有的js文件?你可以使用你的代码,我想我在那里写的代码不会出错!在你的控制器动作渲染中:动作=>“go_convert”而不是“result”,你就完成了=D
<%= form_tag url_for(action: "show"), remote: true do %>
  Number: <input type="text" name="input_number">
  <%= submit_tag "click here" %>
<% end %>
<div id="allclick">
  <%= render :partial => 'goclick' %>
</div>