Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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
RubyonRails——javascript没有';行不通_Javascript_Ruby On Rails_Rating System - Fatal编程技术网

RubyonRails——javascript没有';行不通

RubyonRails——javascript没有';行不通,javascript,ruby-on-rails,rating-system,Javascript,Ruby On Rails,Rating System,我需要实施星级评定系统,让用户评定酒店。我举了一个例子 rating.js文件是: $(function() { $('.rating_star').click(function() { var star = $(this); var form_id = star.attr("data-form-id"); var stars = star.attr("data-stars"); $('#' + form_id + '_stars').val(stars);

我需要实施星级评定系统,让
用户
评定
酒店
。我举了一个例子

rating.js文件是:

$(function() {
  $('.rating_star').click(function() {
    var star = $(this);
    var form_id = star.attr("data-form-id");
    var stars = star.attr("data-stars");
    $('#' + form_id + '_stars').val(stars);

    $.ajax({
      type: "post",
      url: $('#' + form_id).attr('action') + '.json',
      data: $('#' + form_id).serialize(),
      success: function(response){
        console.log(response);
        update_stars();
        if(response["avg_rating"]){
          $('#average_rating').text(response["avg_rating"]);
          }
        }
      })
  });        
});

function update_stars(){
  $('.star_rating_form').each(function() {
    var form_id = $(this).attr('id');
    set_stars(form_id, $('#' + form_id + '_stars').val());
  });
}

function set_stars(form_id, stars) {
  for(i = 1; i <= 5; i++){
    if(i <= stars){
      $('#' + form_id + '_' + i).addClass("on");
    } else {
      $('#' + form_id + '_' + i).removeClass("on");
    }
  }
}
带有评级星的页面来源包括以下行:

UPD1:rails错误日志的输出显示我错过了
end
语句。。。添加后,错误发生了变化:

Started PATCH "/ratings/2.json" for 127.0.0.1 at 2014-07-19 18:52:43 +0400
Processing by RatingsController#update as JSON
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"7DwBNYlmmucwodZ8UDINYIaMG8Ep4sloBGEoiaiXoxQ=", "rating"=>{"hotel_id"=>"10", "user_id"=>"1", "stars"=>"5"}, "id"=>"2"}
  User Load (0.3ms)  SELECT  "users".* FROM "users"  WHERE "users"."remember_token" = '715016a7327649b3aaeb6f7e65b10996cbe1eb08' LIMIT 1
  Rating Load (0.2ms)  SELECT  "ratings".* FROM "ratings"  WHERE "ratings"."id" = ? LIMIT 1  [["id", 2]]
  Hotel Load (0.1ms)  SELECT  "hotels".* FROM "hotels"  WHERE "hotels"."id" = ?  ORDER BY created_at DESC LIMIT 1  [["id", 10]]
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
Completed 500 Internal Server Error in 21ms

ActiveModel::ForbiddenAttributesError (ActiveModel::ForbiddenAttributesError):
  app/controllers/ratings_controller.rb:20:in `update'


  Rendered /usr/lib/ruby/gems/1.9.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.9ms)
  Rendered /usr/lib/ruby/gems/1.9.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb (1.1ms)
  Rendered /usr/lib/ruby/gems/1.9.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb (5.2ms)
  Rendered /usr/lib/ruby/gems/1.9.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb (72.6ms)
下一行中的控制器中出现错误:

@rating.update_attributes(params[:rating])

您收到的错误表明您错过了文件末尾的
end
语句

这很可能是因为缩进错误,可能导致了不平衡的
end
语句

以下是文件的结尾:

  def js_logged_in
    if(!signed_in?)
    flash[:error] = "You must be a signed in to leave a rating!"
    render :js => "window.location = '/signin'"
  end
end

最后的
end
不会关闭类定义,它会关闭
def js_logged_in
方法。如果没有缩进
if
,那么与
def js\u logged\u匹配的
end
实际上是在关闭
if

你所说的“我认为错误完全在java代码中”是什么意思?浏览器控制台的输出是什么?有JS错误吗?对不起,我是说“某处”。不,控制台中没有错误。能否显示此错误的控制台日志?抱歉,我不清楚。运行错误日志就是我的意思。基本上是终端窗口,当您单击星型时,您会在其中写入“rails服务器”,您会得到一个内部服务器错误。如果有错误,请告诉我们log@AlMacks请粘贴有问题的整个输出。您是对的,但现在有一个新错误(在我添加了“end”之后)。UPD…当我将行更改为@rating.update_attributes(rating_params)时,它就消失了。非常感谢。
  def js_logged_in
    if(!signed_in?)
    flash[:error] = "You must be a signed in to leave a rating!"
    render :js => "window.location = '/signin'"
  end
end