Max*_*ams 6 jquery ruby-on-rails ruby-on-rails-3
我来到我的第一个远程表单在一个新的rails 3应用程序,我无法让它远程提交:它一直提交为HTML.我已经在其他rails 3应用程序中做到了这一点,所以我认为它必须是我忘记的东西.
这是我的html.erb文件中的表单:
<%= form_for Assignment.new, :remote => true do |f| %>
<%= hidden_field_tag "assignment[task_id]", @task.id %>
<%= hidden_field_tag "assignment[person_id]", person.id %>
<%= submit_tag "Add to task" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
以下是它在页面上呈现的方式.我已经包含了javascript文件链接,因为我觉得这个问题与js没有正确设置有关.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="/javascripts/jquery.js?1306857355" type="text/javascript"></script>
<script src="/javascripts/person.js?1306857355" type="text/javascript"></script>
<script src="/javascripts/jquery-ui-1.8.11.custom.min.js?1306857355" type="text/javascript"></script>
<script src="/javascripts/jquery_ujs.js?1306857355" type="text/javascript"></script>
<script src="/javascripts/jquery.ui.datepicker.js?1306857355" type="text/javascript"></script>
<script src="/javascripts/jquery.colorbox-min.js?1306857355" type="text/javascript"></script>
<script src="/javascripts/jquery.tipTip.minified.js?1306857355" type="text/javascript"></script>
<script src="/javascripts/application.js?1306857355" type="text/javascript"></script>
<meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="ErI0bMA1E0JAXwvyVMistPsWc4fg2dG5tDPOgeur358="/>
</head>
<body class="tasks">
<form accept-charset="UTF-8" action="/assignments" class="new_assignment" data-remote="true" id="new_assignment" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓" />
<input name="authenticity_token" type="hidden" value="ErI0bMA1E0JAXwvyVMistPsWc4fg2dG5tDPOgeur358=" />
</div>
<input id="assignment_task_id" name="assignment[task_id]" type="hidden" value="2" />
<input id="assignment_person_id" name="assignment[person_id]" type="hidden" value="1" />
<input name="commit" type="submit" value="Add to task" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这一切看起来都在正确设置.但是,当我提交我在我的日志中得到这个:
Started POST "/tasks/2" for 127.0.0.1 at 2011-06-08 15:56:42 +0100
Processing by TasksController#update as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"ErI0bMA1E0JAXwvyVMistPsWc4fg2dG5tDPOgeur358=", "assignment"=>{"task_id"=>"2", "person_id"=>"1"}, "commit"=>"Add to task", "id"=>"2"}
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,我想我错过了一些我需要做的事情来正确地解决这个问题.这是我的Gemfile以及相关的情况:
source 'http://rubygems.org'
gem "rake", "0.8.7"
gem 'rails', '3.0.7'
gem 'haml'
gem 'heroku'
gem "heroku_backup_task"
gem 'authlogic', '3.0.2'
gem 'rails3-generators'
gem 'txtlocal', :git => 'git://github.com/epigenesys/txtlocal.git'
gem 'chronic'
gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'bcrypt-ruby'
gem 'taps' #for heroku db import/export
gem 'jquery-rails', '>= 1.0.3'
gem 'jrails'
group :development, :test do
gem 'rspec'
gem 'mocha'
gem "rspec-rails", "~> 2.4"
gem 'database_cleaner', '0.5.2'
gem 'capybara', :git => 'git://github.com/jnicklas/capybara.git'
gem 'selenium-client'
gem 'machinist'
gem 'faker'
end
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到缺少什么?
谢谢,最大
编辑 - 我的愚蠢错误:包含远程表单的部分是从另一个调用相同操作的非远程表单内部调用的.因此外部表单由提交按钮触发,而不是内部远程表单.卫生署.谢谢阅读.
我有同样的问题,我解决了添加:format =>:js到路径.
所以它看起来像这样:
<%= form_for :assignment, :url => assignments_path(:format => :js)
Run Code Online (Sandbox Code Playgroud)