错误的参数个数(2个为1)Rails form_for

时间:2013-11-25 03:18:04

标签: ruby-on-rails

<%= form_for @video, :html => {:multipart => true} do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </p>
  <p>
    <%= f.file_field :translation_handwritten %>
  </p>
  <p><%= f.submit %></p>
<% end %>

有没有人知道为什么会出现这样的错误?我很丢失...... Here is the screenshot of my error

这是我的应用程序的Gemfile。这些可能是罪魁祸首吗?我需要改变什么?     来源'https://rubygems.org'

gem 'rails', '3.2.14'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sass-rails',   '~> 3.2.3'
gem 'bootstrap-sass'
gem 'bcrypt-ruby', '3.0.1'
gem 'devise'
gem 'omniauth-google-oauth2'
gem 'omniauth-facebook'
gem 'whenever', :require => false
gem 'carrierwave' #see README: https://github.com/carrierwaveuploader/carrierwave

group :development, :test do
  gem 'sqlite3'
  gem 'pg'
  gem 'rails_12factor'
  gem 'ruby-debug19'
  gem 'database_cleaner'
  gem 'capybara'
  gem 'launchy'
  gem 'rspec-rails'
  gem 'simplecov'
  gem 'factory_girl_rails'
  gem 'ffaker'
  gem 'whenever'
end

group :test do
  gem 'cucumber-rails', :require => false
  gem 'cucumber-rails-training-wheels'
end

group :production do
  gem 'pg'
  gem 'rails_12factor'
end

group :assets do
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem 'haml'

更新 当我将@video更改为我拥有的任何其他模型时,它不会出错。 (它显然无法正常工作,因为我需要将其附加到视频中)。可能导致这种情况的原因是什么?

require 'carrierwave/orm/activerecord'

class Video < ActiveRecord::Base
  attr_accessible :course, :qa_complete, :qa_id, :subject, :title, 
  :translate_complete, :translator_id, :type_complete, :typer_id, :video_id, :due_date, :translation_handwritten

  validates :video_id, :presence => true, :uniqueness => true #add uniqueness in db too

  mount_uploader :translation_handwritten, TranslationsUploader


end

更新2 以下是我的应用程序跟踪:

app/views/shared/_form.html.erb:1:in `_app_views_shared__form_html_erb___611020419_98374470'
app/views/videos/translate_video_handwritten.html.haml:54:in `_app_views_videos_translate_video_handwritten_html_haml__702424599_100568110'

5 个答案:

答案 0 :(得分:0)

form_for自动为您提供multipart true。试着摆脱它。

http://guides.rubyonrails.org/form_helpers.html#uploading-files

答案 1 :(得分:0)

检查以下修改:

<%= form_for( @video, :html => {:multipart => true}) do |f| %>

答案 2 :(得分:0)

视频是资源吗?另外,你有视频路线吗? 如果是,请尝试在模型中评论carrierwave代码。 如果这不起作用,您可以粘贴完整的应用程序跟踪吗?

答案 3 :(得分:0)

尝试使用url作为参数。与that一样。

我希望有所帮助。

答案 4 :(得分:-1)

<% form_for "video", :html => { :multipart => true } do |f| %>