我正在尝试实现类似于Stack Overflow上的投票系统.(使用Rails 3)我希望在没有页面重新加载的情况下完成投票,所以我有这个代码
link_to("/tags/#{tag.id}/upVote", :remote => true )
Run Code Online (Sandbox Code Playgroud)
所以在我的/ views/tags目录中,我有一个名为_upVote.js.erb的文件,我认为在单击此链接时会调用该文件,但事实并非如此.它试图以HTML格式处理upVote,这是我得到的错误
缺少模板标签/ upVote {:formats => [:html]
另外,这是我的路线文件中的内容
match "tags/:id/upVote" => "tags#upVote"
Run Code Online (Sandbox Code Playgroud)
任何想法我怎么能让这个工作?
我正在尝试使用包含输入字段和文件字段的 remote:true 选项通过 ajax 提交表单(需要上传图像)
这是我的观点
= form_tag("/campaigns/upload_form", method: 'post', format: :js, enctype: 'multipart/form-data', remote: true) do
Run Code Online (Sandbox Code Playgroud)
其中包含文件字段
= file_field :campaign, :fb_photo, class: 'form-control', id: 'fb_campaign_product_photo', title: 'Upload Image for your Product'
Run Code Online (Sandbox Code Playgroud)
在控制器动作中
def upload_form
# do some stuff
respond_to do |format|
format.html
format.js
end
end
Run Code Online (Sandbox Code Playgroud)
当我提交没有文件字段的表单时,它正在处理并正确呈现为 JS
Started POST "/campaigns/upload_form" for 127.0.0.1 at 2016-03-21 18:06:51 +0530
Processing by CampaignsController#upload_form as JS
Run Code Online (Sandbox Code Playgroud)
但是当我尝试提交文件字段时,它正在处理为 HTML 并抛出模板丢失错误,因为我没有为此添加视图。
编辑这篇文章来说明:我已经按照下面的答案中的建议尝试了 remotipart gem,它对我有用,但仍然在浏览器控制台中出现以下错误
jquery.js?body=1:9665 POST http://localhost:3000/campaigns/upload_form 500 (Internal Server Error)
Run Code Online (Sandbox Code Playgroud)
并在 development.log 中出现以下错误
ActionView::MissingTemplate - …Run Code Online (Sandbox Code Playgroud)