【问题标题】:Why is my create.js.erb not rendering?为什么我的 create.js.erb 没有渲染?
【发布时间】:2011-07-28 02:22:30
【问题描述】:

我正在尝试创建一个使用 AJAX 提交评论的评论页面,我使用的是 Rails 3,并且在我的 form_for 块中我正在设置:remote => true。查看 Chrome 开发人员工具,我可以看到服务器将页面 create.js.erb 作为文本/javascript 返回,但 javascript 没有被执行。

commentable_controller

def create
  @commentable = Commentable.new
  @commentable.body = params[:body]
  @commentable.user = current_user
  if @commentable.save
    respond_to do |format|
      format.js
    end
  end
end

create.js.erb

    alert("hello world");

show.html.haml

    #feed
      =render :partial => "commentable/commentable", :collection => @commentables
    -form_tag('/commentable/create', :remote => true) do
      =hidden_field_tag :game_id, @game.id
      =text_area_tag :body, nil, :rows => 3, :value => "160 Characters", :id => 'new_message'
      =submit_tag "Post"

编辑:

进一步研究后,我可以看到请求以不正确的 HTML 格式进入。显然这与 Rails 3 使用的原型版本有关...... wtf rails

【问题讨论】:

  • 我唯一能想到的可能是 jquery-mobile 以某种方式干扰了 create.js.erb 上的 javascript
  • 你能用 :remote => true 显示视图吗?
  • 我不确定 rails 3 但在以前版本的 rails 处理 ajax 请求时,javascript 不会加载...您已编写代码以手动包含 java 脚本.....跨度>

标签: javascript ruby-on-rails ajax


【解决方案1】:

您是否为 rails3 正确安装了 jquery?例如。使用jquery-rails gem 非常简单。只需将 gem 添加到您的 Gemfile 并输入

rails g jquery:install

那么你所做的应该会起作用。

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 2014-08-20
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    相关资源
    最近更新 更多