1

我正在尝试在文章显示页面上获取链接,以便当用户点击撰写新评论时,它会将他们带到链接

/comic_reviews/'the article they want to comment on'/reviews/new

他们将被引导到新的评论页面

我怎么能做到这一点

4

2 回答 2

3

在您的路线文件中,您将指定这样的路线

match '/comic_reviews/:comic_name/reviews/new' => 'reviews#new', via: :get

然后在你的评论控制器中,你需要这样的东西

评论控制器.rb

class ReviewsController < ApplicationController

  def new
    @comic = Commic.find_by_name(params[:comic_name])
    if @comic
      @review = @comic.reviews.build
      render 'new'
    else
      #Render some error page since comic was not found
    end
  end
end

然后,您将可以访问@comic@review在您的reviews/new视图中,这样您就可以构建一个仅发布帖子以创建评论并允许您存储它的表单。这应该让你继续前进。

编辑

在您new看来,您需要一个看起来像这样的表单

<%= form_for @review do |f| %>
  <%= f.label :some_attribute %>:
  <%= f.text_field :some_attribute %><br />

  <%= f.submit %>
<% end %>

这将期望您有一个在您的路线文件中创建评论的路线和在您的评论控制器中的操作。

如果您正在为这些主题而苦苦挣扎,我建议您阅读这个优秀的教程

http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

或者只是阅读 Rails API 的文档,它将为您提供非常准确的示例。

于 2012-12-21T20:24:28.187 回答
1

您可以通过路线执行此操作

resources :comic_reviews do
  resources :reviews
    #probably_some_other_route_here
end

有了宁静的模式,你就可以轻松实现你想要的任何东西

控制器

Someclass < Someotherclass

  #some your code

  def new
    @instance_var = Your_model.new
  end

  def create
    @instance_var = Your_model.new(params[:some_name_here])
    if @instance_var.save
      redirect_to somewhere
    else
      render 'new'
    end
  end
end

你也需要表格,但我认为这不会造成任何麻烦

于 2012-12-21T21:20:44.893 回答