Rails 3,在另一个视图中创建一个控制器的视图

时间:2012-05-26 18:41:00

标签: ruby-on-rails

我正在研究涉及用户,项目和线程模型的Rails应用程序。用户可以创建或访问项目并创建有关该项目的线程。因此,用户可以访问项目页面并从菜单中选择“创建线程”选项。我希望Threads控制器的'new'和'show'操作的视图显示在项目的'show'视图中​​。

过去三四天我一直在使用Rails,所以我目前的解决方案效率很低。

我以这种方式为项目页面中的Thread创建了一个指向'new'表单的链接:

<%= link_to "Create Thread", {controller: 'projects', action: 'show',
newthread: true} %>

项目的“show”操作存储@newthread值,当呈现项目页面时,它会检查是否已设置@newthread,如果已设置,则显示表单以创建新线程。

我可以用这种方式创建新线程,但是当表单中有错误时,我不确定如何使用线程表单及其错误消息呈现项目页面。

我该如何解决这个特殊问题?或者,是否有更好的方法来组织这两个资源,以便Thread控制器的视图始终显示在项目的“show”视图中?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为在这种情况下最好的选择是使用嵌套路由。

看看这里:http://guides.rubyonrails.org/routing.html#nested-resources

您可以使用项目的show视图,使用简单的循环显示与其相关的线程。

例如:

项目管理员:

def show
    @project = Project.find(params[:id])
    @threads = @project.threads.all
end

显示视图:

<% @threads.each do |thread| %>
...
<% end %>

我希望它有所帮助...