html - Ruby on Rails : a weird no method error in my controller?

标签 html ruby-on-rails ruby ajax ruby-on-rails-3

这是我在日志中得到的内容:

于 2011 年 3 月 18 日星期五 01:11:14 -0700 开始发布 127.0.0.1 的“/video_votes.437?type=up” 由 VideoVotesController#create as 处理 参数:{"authenticity_token"=>"DLyDcc4MJxK7gk4URiyyjvsLLl9hjtDChAyQRGVawKg=", "type"=>"up"} 83 毫秒内完成

NoMethodError(当你没有预料到时,你得到了一个 nil 对象! 您可能期望一个 ActiveRecord::Base 的实例。 评估 nil.[] 时发生错误: app/controllers/video_votes_controller.rb:3:在“创建”

当我单击调用创建方法的按钮时,出现此错误。

这是我的创建方法中的代码(请注意,第三行是 @video = Video.find(params[:video_vote][:video_id]) 行):

def create       
  @video = Video.find(params[:video_vote][:video_id])
  @vote = @video.video_votes.new
  if params[:type] = "up"
    @vote.value = 1
  else
    @vote.value = -1
  end

  if @vote.save
    respond_to do |format|
      format.html { redirect_to @video }
      format.js
    end
  else
    respond_to do |format|
      format.html { redirect_to @video }
      format.js {render 'fail_create.js.erb'}
    end
  end

这是我 View 中调用 create 方法的按钮的代码:

<div id='voting_div'>
  <%= button_to "+1", video_votes_path(video, :type=> "up"), :remote => true %>
  <div id='vote_display'>
    <p id='votes'><%= pluralize video.vote_sum, 'Votes' %></p>
  </div>
  <%= button_to "-1", video_votes_path(video, :type=> "down"), :remote => true %>
</div>

这是怎么回事?如何修复此错误?

最佳答案

您的参数哈希是 {"authenticity_token"=>"DLyDcc4MJxK7gk4URiyyjvsLLl9hjtDChAyQRGVawKg=", "type"=>"up"}

在此哈希中,没有名为“video_vote”的键,因此当您尝试访问 params[:video_vote][:video_id] 时,因为 params[:video_vote] 为零。它会抛出这个错误。

检查您的路线,或者是否需要使用该按钮“获取”更多值,因为您的 params 哈希不知道“video_vote”键。

关于html - Ruby on Rails : a weird no method error in my controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5348395/

相关文章:

ruby-on-rails - mongoid - 查询嵌入式文档

html - 如何仅使用 CSS 制作 donut 片段

html - CSS,如何像汉堡包一样在两个 div 之间对齐两个 div?

ruby-on-rails - Capistrano 源代码中的 <<-CMD 是什么?

Rubymine 6.0.2,无法调试

javascript - 是否有 JavaScript 的 Function.prototype.bind 的 Ruby 等价物?

ruby-on-rails - 在某些特殊情况下如何跳过事件记录验证?

html - 将跨度内的文本与容器顶部对齐

javascript - 如何导航到我网站的另一个页面而不用在 php 中重新加载 header

ruby-on-rails - CentOS *** 错误 : Phusion Passenger doesn't seem to be running