【问题标题】:Rails 3, creating views of one controller within a view of anotherRails 3,在另一个控制器的视图中创建一个控制器的视图
【发布时间】:2012-05-27 07:25:30
【问题描述】:

我正在开发一个涉及用户、项目和线程模型的 Rails 应用程序。用户可以创建或访问项目并创建有关该项目的线程。因此,用户可能会访问项目页面并从菜单中选择“创建线程”选项。我希望线程控制器的“新”和“显示”操作的视图显示在项目的“显示”视图中。

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

我以这种方式在项目页面中为线程创建“新”表单的链接:

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

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

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

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

谢谢。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

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

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

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

    例如:

    项目控制器:

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

    显示视图:

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

    希望对你有帮助……

    【讨论】:

      猜你喜欢
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      相关资源
      最近更新 更多