【发布时间】:2012-01-15 19:54:34
【问题描述】:
好吧,老实说,我没有花太多时间寻找解决方案,但看看我儿子如何让我的注意力四处奔走。无论哪种方式,我都想问一个看起来很简单但到目前为止让我难过的问题。
所以为了简单起见,假设我有用户(w/model)和 Home 控制器,Home 是根路由。
在根目录中,我希望能够看到用户使用 ajax 使用帖子列表更新主页上的部分帖子。
在 users 控制器中,我有一个名为 userposts 的定义,其中包含此内容
def userposts
@user = User.find_by_id(params[:id])
@userposts = @user.posts.all(:order => "created_at DESC")
respond_to do |format|
format.js { @userposts}
end
end
在我看来,我有
<p id="aboutuser">
<% if @user.about? %>
<%= " " + @user.id.to_s %>
<% else %>
User has not yet filled this out.
<% end %>
</p>
<h3 id="authpostlink">
<%= link_to "List of all posts", user_userposts_path(@user.id), :id => @user.id, :remote => true %>
</h3>
我的错误如下
于 1 月 15 日星期日 13:36:23 开始为 127.0.0.1 获取“/users/2/userposts” -0600 2012 由 UsersController#userposts 作为 JS 参数处理:{"user_id"=>"2"} 用户负载 (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT 1 Completed 500 Internal 1ms 内的服务器错误
NoMethodError(未定义方法
posts' for nil:NilClass):userposts'
app/controllers/users_controller.rb:27:in渲染 /home/n0de/.rvm/gems/ree-1.8.7-2011.03/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.8ms) 渲染 /home/n0de/.rvm/gems/ree-1.8.7-2011.03/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms) 渲染 /home/n0de/.rvm/gems/ree-1.8.7-2011.03/gems/actionpack-3.1.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb 在救援/布局中(3.2 毫秒)
我确实意识到我没有发布调用操作以更新 div 的 _show.js.erb 文件,但根据错误消息,该过程似乎没有那么远。
【问题讨论】:
-
问题似乎出在你的 rouse.rb 中,你能发一下吗?
-
@user是否为空?您是否向用户资源添加了新的 RESTful 操作?另外,我认为您应该将@user传递给user_userposts_path,如果您已将其添加为:on => :member方法,如routing docs 中所述。
标签: ruby-on-rails ruby ajax