【发布时间】:2012-12-22 20:55:00
【问题描述】:
我正在尝试在文章显示页面上获取链接,以便当用户点击撰写新评论时,它会将他们带到链接
/comic_reviews/'the article they want to comment on'/reviews/new
他们将被引导到新的评论页面
我怎样才能做到这一点
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3
我正在尝试在文章显示页面上获取链接,以便当用户点击撰写新评论时,它会将他们带到链接
/comic_reviews/'the article they want to comment on'/reviews/new
他们将被引导到新的评论页面
我怎样才能做到这一点
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3
在您的路线文件中,您可以指定这样的路线
match '/comic_reviews/:comic_name/reviews/new' => 'reviews#new', via: :get
然后在您的评论控制器中,您将需要这样的东西
reviews_controller.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
然后,您将可以在您的 reviews/new 视图中访问 @comic 和 @review,这样您就可以构建一个表单,该表单仅用于创建评论并允许您存储评论。这应该能让你继续前进。
编辑
在您的 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 的文档,它将为您提供非常准确的示例。
【讨论】:
你可以通过路由来做到这一点
resources :comic_reviews do
resources :reviews
#probably_some_other_route_here
end
有了restful模式,你想要的一切都很容易实现
控制器
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
你还需要表格,但我认为这不会造成任何麻烦
【讨论】: