繁体   English   中英

Rails忽略render和redirect_to

[英]Rails ignoring render and redirect_to

我在这里有一个非常简单的轨道问题,但我似乎无法在任何地方找到答案。 我想一些问题源于我使用Rails 2.1的Rails 1.2教程。 无论如何..

我正在写一个博客系统,我正在实施评论。 一旦我使用脚本/控制台创建它们,我的评论显示正常,但是让评论表单本身工作是很难的。

在posts_controller.rb我有

  def comment
    Post.find(params[:id]).comments.create(params[:comment])
    flash[:notice] = "Added comment"
    #render :action => show
    redirect_to :action => show
  end  

在show.html.erb(视图)我有

<%= form_tag :action => "comment", :id => @post %>
  <%= text_area "comment", "body" %><br>
  <%= submit_tag "Post Comment" %>

当我提交表单时,它会尝试转到urb / posts / comment / 1,这显然是不正确的,并且它抱怨它无法找到模板。 显然我不想在那里使用模板,因为我已经告诉它重定向到show动作,因为我希望它只是重新显示帖子的显示页面,并在那里添加新评论。

我已经尝试了注释掉的行(render:action => show)和redirect_to行,似乎都没有做任何事情。

我确定我错过了一些简单的东西,但它是什么?

redirect_to :action => 'show', :id => params[:id]有show works周围的引号?

Rails 2.1包含“RESTful资源”。 show恰好是所有rails控制器使用的预定义REST操作之一的名称。

Rails在幕后做了一些魔术,并且:show相当于“显示具有特定给定ID的这一个特定元素”。 听起来很混乱。 ID可能默认为“1”。 因此,您从渲染调用中看到生成的URL

Rails 2.1的方法将使用以下操作和模板:

  • index - 显示完整的注释列表
  • create - 添加新评论
  • show - 仅显示特定注释(不是完整列表)。 听起来不像你想要的那样,但内部导轨的“神奇”将默认为此。

还有new (显示视图以输入新评论) edit (显示视图以编辑现有评论) update (处理更新提交)和destroy (duh),但它看起来不像你在这个例子中使用它们。

你有教程的链接吗? 将它移植到Rails 2.1风格并不会太难。

是的,你使用旧的铁轨风格。

新鲜玩意:

   form_for :comment, :url => { :post_id => @post } do |f|
     f.text_area :body
     submit_tag "Post"
   end

您可以使用资源发布帖子和评论,搜索谷歌以获得更好的教程或安装rails 1.2.6:

gem install -v 1.2.6 rails

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM