ruby-on-rails – Rails错误消息 – 参数2的错误数量为1
发布时间:2020-12-17 02:31:05 所属栏目:百科 来源:网络整理
导读:我在Enki blogging gem中点击了评论链接(发布,未阅读,评论),它给了我这个错误消息 ArgumentError in Posts#showwrong number of arguments (2 for 1)Extracted source (around line #27): 但我无法弄清楚它发送的两个论点是什么.请注意,我已经创建了一个没有
我在Enki blogging gem中点击了评论链接(发布,未阅读,评论),它给了我这个错误消息
ArgumentError in Posts#show wrong number of arguments (2 for 1) Extracted source (around line #27): 但我无法弄清楚它发送的两个论点是什么.请注意,我已经创建了一个没有评论的帖子. 这是控制器动作节目 def show @post = Post.find_by_permalink(*([:year,:month,:day,:slug].collect {|x| params[x] } << {:include => [:approved_comments,:tags]})) @comment = Comment.new end 这是我点击views / posts / index.html.erb进行评论的链接 <li class="comments"><%= link_to(pluralize(post.approved_comments.size,"comment"),post_path(post,:anchor => 'comments')) %></li> 这是屏幕上的错误消息.有什么建议我可以去试图找出发生了什么? Rspec测试(注意,我没有创建任何评论所以我不知道为什么它会期待一个) 1) DeletePostUndo#process! creates a new post with comments based on the attributes stored in #data Failure/Error: new_post.comments.count.should == 1 expected: 1 got: 0 (using ==) # ./spec/models/delete_post_undo_spec.rb:11:in `block (3 levels) in <top (required)>' 2) /posts/show.html.erb should render a post Failure/Error: render :template => "/posts/show.html.erb" ActionView::Template::Error: wrong number of arguments (2 for 1) # ./app/helpers/url_helper.rb:9:in `post_comments_path' # ./app/views/posts/show.html.erb:27:in `_app_views_posts_show_html_erb___532600282027141355_2210809080' # ./spec/views/posts/show.html.erb_spec.rb:45:in `block (2 levels) in <top (required)>' localhost:3000上的错误消息 ArgumentError in Posts#show Showing /Users/mm/Sites/trenchstory/app/views/posts/show.html.erb where line #27 raised: wrong number of arguments (2 for 1) Extracted source (around line #27): 24: <% end -%> 25: </ul> 26: </div> 27: <% end -%> 28: <%= form_for([@post,@comment]) do |form| -%> 29: <div> 30: <p><%= form.text_field 'author' %><label for="comment_author"><small>Name or <a href="http://openidexplained.com/">OpenID</a> (required)</small></label></p> Rails.root: /Users/mm/Sites/trenchstory Application Trace | Framework Trace | Full Trace app/helpers/url_helper.rb:9:in `post_comments_path' app/views/posts/show.html.erb:27:in `_app_views_posts_show_html_erb___852287167798563826_2191478080' Request Parameters: {"year"=>"2012","month"=>"02","day"=>"16","slug"=>"my-first-post"} Show session dump _csrf_token: "OogtzfpSz3JylLAjvBdnBkn/Ti4RdAc+sbuGXeREqHA=" logged_in: true session_id: "b045900073f1eed9a9880ff4ead34d07" warden.user.user.key: ["User",[1],"$2a$10$9C.WngPResjBHCQ/vXK0JO"] Show env dump GATEWAY_INTERFACE: "CGI/1.1" HTTP_ACCEPT: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" HTTP_ACCEPT_CHARSET: "ISO-8859-1,utf-8;q=0.7,*;q=0.3" HTTP_ACCEPT_ENCODING: "gzip,deflate,sdch" HTTP_ACCEPT_LANGUAGE: "en-US,en;q=0.8" REMOTE_ADDR: "127.0.0.1" REMOTE_HOST: "activate.adobe.com" SERVER_NAME: "localhost" SERVER_PROTOCOL: "HTTP/1.1" Response Headers: None 更新 views / posts / show.html.erb(参见下面的部分内容) <% content_for(:head) do -%> <%= javascript_include_tag 'common' %> <%= javascript_include_tag 'live-comment-preview' %> <% end -%> <% content_for(:page_title) do -%> <%= post_title(@post) -%> <% end -%> <%= render :partial => 'posts/post',:locals => {:post => @post} %> <ol class="commentlist"> <% @post.approved_comments.each do |comment| -%> <li<%=raw cycle(' class="alt"','') %> id="comment-<%= comment.id %>"> <%= render :partial => 'comments/comment',:locals => {:comment => comment} %> </li> <% end -%> </ol> <div class="related">Looking for more? Head on over to the <%= link_to("archives",archives_path) %>.</div> <h2>Post a comment</h2> <% unless @comment.errors.empty? -%> <div class="errors"> <h3>Comment not added!</h3> <ul> <% @comment.errors.sort_by(&:first).each do |error| -%> <li><%= format_comment_error(error) %></li> <% end -%> </ul> </div> <% end -%> <%= form_for([@post,@comment]) do |form| -%> <div> <p><%= form.text_field 'author' %><label for="comment_author"><small>Name </small></label></p> <p><%= form.text_area 'body' %><br><small>(<a href="http://lesstile.rubyforge.org">lesstile enabled</a> - surround code blocks with ---)</small></p> <p><%= submit_tag "Add Comment" %></p> </div> <% end -%> 在app视图中部分呈现帖子显示 <h2><%= link_to(post.title,post_path(post)) %></h2> <div class="entrybody"> <%=raw post.body_html %> </div> <div class="meta"> <ul> <li class="date">Posted on <%= format_post_date(post.published_at) %></li> <li class="comments"><%= link_to(pluralize(post.approved_comments.size,:anchor => 'comments')) %></li> <% unless post.tags.empty? -%> <li class="tags">Tagged <%= linked_tag_list(post.tags) %></li> <% end -%> </ul> </div> 耙路线 forem /forums {:to=>Forem::Engine} new_user_session GET /users/sign_in(.:format) {:action=>"new",:controller=>"devise/sessions"} user_session POST /users/sign_in(.:format) {:action=>"create",:controller=>"devise/sessions"} destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy",:controller=>"devise/sessions"} user_password POST /users/password(.:format) {:action=>"create",:controller=>"devise/passwords"} new_user_password GET /users/password/new(.:format) {:action=>"new",:controller=>"devise/passwords"} edit_user_password GET /users/password/edit(.:format) {:action=>"edit",:controller=>"devise/passwords"} PUT /users/password(.:format) {:action=>"update",:controller=>"devise/passwords"} cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel",:controller=>"devise/registrations"} user_registration POST /users(.:format) {:action=>"create",:controller=>"devise/registrations"} new_user_registration GET /users/sign_up(.:format) {:action=>"new",:controller=>"devise/registrations"} edit_user_registration GET /users/edit(.:format) {:action=>"edit",:controller=>"devise/registrations"} PUT /users(.:format) {:action=>"update",:controller=>"devise/registrations"} DELETE /users(.:format) {:action=>"destroy",:controller=>"devise/registrations"} admin_session POST /admin/session(.:format) {:action=>"create",:controller=>"admin/sessions"} new_admin_session GET /admin/session/new(.:format) {:action=>"new",:controller=>"admin/sessions"} edit_admin_session GET /admin/session/edit(.:format) {:action=>"edit",:controller=>"admin/sessions"} GET /admin/session(.:format) {:action=>"show",:controller=>"admin/sessions"} PUT /admin/session(.:format) {:action=>"update",:controller=>"admin/sessions"} DELETE /admin/session(.:format) {:action=>"destroy",:controller=>"admin/sessions"} preview_admin_posts POST /admin/posts/preview(.:format) {:action=>"preview",:controller=>"admin/posts"} admin_posts GET /admin/posts(.:format) {:action=>"index",:controller=>"admin/posts"} POST /admin/posts(.:format) {:action=>"create",:controller=>"admin/posts"} new_admin_post GET /admin/posts/new(.:format) {:action=>"new",:controller=>"admin/posts"} edit_admin_post GET /admin/posts/:id/edit(.:format) {:action=>"edit",:controller=>"admin/posts"} admin_post GET /admin/posts/:id(.:format) {:action=>"show",:controller=>"admin/posts"} PUT /admin/posts/:id(.:format) {:action=>"update",:controller=>"admin/posts"} DELETE /admin/posts/:id(.:format) {:action=>"destroy",:controller=>"admin/posts"} preview_admin_pages POST /admin/pages/preview(.:format) {:action=>"preview",:controller=>"admin/pages"} admin_pages GET /admin/pages(.:format) {:action=>"index",:controller=>"admin/pages"} POST /admin/pages(.:format) {:action=>"create",:controller=>"admin/pages"} new_admin_page GET /admin/pages/new(.:format) {:action=>"new",:controller=>"admin/pages"} edit_admin_page GET /admin/pages/:id/edit(.:format) {:action=>"edit",:controller=>"admin/pages"} admin_page GET /admin/pages/:id(.:format) {:action=>"show",:controller=>"admin/pages"} PUT /admin/pages/:id(.:format) {:action=>"update",:controller=>"admin/pages"} DELETE /admin/pages/:id(.:format) {:action=>"destroy",:controller=>"admin/pages"} admin_comments GET /admin/comments(.:format) {:action=>"index",:controller=>"admin/comments"} POST /admin/comments(.:format) {:action=>"create",:controller=>"admin/comments"} new_admin_comment GET /admin/comments/new(.:format) {:action=>"new",:controller=>"admin/comments"} edit_admin_comment GET /admin/comments/:id/edit(.:format) {:action=>"edit",:controller=>"admin/comments"} admin_comment GET /admin/comments/:id(.:format) {:action=>"show",:controller=>"admin/comments"} PUT /admin/comments/:id(.:format) {:action=>"update",:controller=>"admin/comments"} DELETE /admin/comments/:id(.:format) {:action=>"destroy",:controller=>"admin/comments"} undo_admin_undo_item POST /admin/undo_items/:id/undo(.:format) {:action=>"undo",:controller=>"admin/undo_items"} admin_undo_items GET /admin/undo_items(.:format) {:action=>"index",:controller=>"admin/undo_items"} POST /admin/undo_items(.:format) {:action=>"create",:controller=>"admin/undo_items"} new_admin_undo_item GET /admin/undo_items/new(.:format) {:action=>"new",:controller=>"admin/undo_items"} edit_admin_undo_item GET /admin/undo_items/:id/edit(.:format) {:action=>"edit",:controller=>"admin/undo_items"} admin_undo_item GET /admin/undo_items/:id(.:format) {:action=>"show",:controller=>"admin/undo_items"} PUT /admin/undo_items/:id(.:format) {:action=>"update",:controller=>"admin/undo_items"} DELETE /admin/undo_items/:id(.:format) {:action=>"destroy",:controller=>"admin/undo_items"} admin_health /admin/health(/:action)(.:format) {:action=>"index",:controller=>"admin/health"} admin_root /admin(.:format) {:controller=>"admin/dashboard",:action=>"show"} archives GET /archives(.:format) {:action=>"index",:controller=>"archives"} page GET /pages/:id(.:format) {:action=>"show",:controller=>"pages"} GET /:year/:month/:day/:slug/comments(.:format) {:year=>/d{4}/,:month=>/d{2}/,:day=>/d{2}/,:controller=>"comments",:action=>"index"} POST /:year/:month/:day/:slug/comments(.:format) {:year=>/d{4}/,:action=>"create"} GET /:year/:month/:day/:slug/comments/new(.:format) {:year=>/d{4}/,:action=>"new"} GET /:year/:month/:day/:slug(.:format) {:year=>/d{4}/,:controller=>"posts",:action=>"show"} formatted_posts GET /posts.:format {:controller=>"posts",:action=>"index"} posts GET /(:tag)(.:format) {:controller=>"posts",:action=>"index"} root / {:controller=>"posts",:action=>"index"} 解决方法
正如Azolo指出的那样,Enki定义了自己的post_comments_path助手.问题是Enki没有采用像Rails助手这样的选项参数.所以form_for最终传递了一个选项:format =>零,期待Rails风格的帮手.
你可以通过在Enki的post_comments_path末尾添加options = {}来解决这个问题,也可以通过给form_for一个明确的URL来解决这个问题: form_for(@comment,:url => post_comments_path(@post),:method => :post) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |