我的Ruby on Rails代码有什么问题?

所以我一直想一些AJAX添加到我的RJS主页,我得到一个弹出窗口这个JavaScript错误:我的Ruby on Rails代码有什么问题?

RJS error:

TypeError: Cannot call method 'getElementsByTagName' of null

下面是所有相关代码。

这是我在app /视图/微柱/ create.rjs代码:

page.insert_html :bottom, :feed_items, :partial => 'shared/feed_item', :object => @micropost 

page.replace_html :user_info, pluralize(current_user.microposts.count, "micropost")

page[:micropost_form].reset

page.replace_html :notice, flash[:notice]

flash.discard

这里的应用程序/视图/页/ home.rb:

<% if signed_in? %> 

<table class="front" summary="For signed-in users">

<tr>

<td class="main">

<h1 class="micropost">What's happening?</h1>

<%= render 'shared/micropost_form' %>

<%= render 'shared/feed' %>

</td>

<td class="sidebar round">

<%= render 'shared/user_info' %>

<%= render 'shared/stats' %>

</td>

</tr>

</table>

<% else %>

<h1>Sample App</h1>

<p>

This is the home page for the

<a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>

sample application.

</p>

<%= link_to "Sign up now!", signup_path, :class => "signup_button round" %>

<% end %>

这里是我的饲料部分的应用程序/意见/shared/_feed.html.erb:

<% unless @feed_items.empty? %> 

<table id="feed_items" class="microposts" summary="User microposts">

<%= render :partial => 'shared/feed_item', :collection => @feed_items %>

</table>

<%= will_paginate @feed_items %>

<% end %>

这里是我的源项目的部分应用程序/视图/共享/ _feed_item.html.erb

<tr id = "feed_item"> 

<td class="gravatar">

<%= link_to gravatar_for(feed_item.user), feed_item.user %>

</td>

<td class="micropost">

<span class="user">

<%= link_to feed_item.user.name, feed_item.user %>

</span>

<span class="content"><%= feed_item.content %></span>

<span class="timestamp">

Posted <%= time_ago_in_words(feed_item.created_at) %> ago.

</span>

</td>

<% if current_user?(feed_item.user) %>

<td>

<%= link_to "delete", feed_item, :method => :delete,

:confirm => "You sure?",

:title => feed_item.content %>

</td>

<% end %>

</tr>

而且最后这里是我的微柱控制器的相关部分:

class MicropostsController < ApplicationController 

before_filter :authenticate, :only => [:create, :destroy]

before_filter :authorized_user, :only => :destroy

def create

@micropost = current_user.microposts.build(params[:micropost])

respond_to do |format|

if @micropost.save

flash[:success] = "Micropost created!"

format.html { redirect_to root_path }

format.js

else

@feed_items = []

render 'pages/home'

end

end

end

回答:

鉴于这是一个RJS错误,那问题就在于create.rjs

尝试注释掉page.replace_html :notice, flash[:notice],看看是否能作品。

回答:

getElementsByTagName失败,因为它无法找到您要替换的标识符。很有可能您的页面上没有任何元素,其中包含bottom,user_info或notice。很多时候我不小心设置了div的类但不是id等

以上是 我的Ruby on Rails代码有什么问题? 的全部内容, 来源链接: utcz.com/qa/259600.html

回到顶部