Rails中一个视图中的两个控制器

时间:2012-07-29 12:32:42

标签: ruby-on-rails ruby ruby-on-rails-3 model-view-controller

我有两个控制器,一个用于用户,另一个用于微博。

我正在尝试做的是将相同的视图,用户信息和微博形成。

问题是此页面的网址是www.mywebsite.com/users/18,因此我只能访问用户控制器。

我试着这样做:

render:file => '/ posts / new'但它不起作用。

我发现的唯一解决方案是将所有内容放在一个控制器上,但这将是一团糟。

我真的想为每个人分别设置一个控制器。

所以我不知道该怎么做。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

  

我正在尝试做的是提出相同的视图,用户信息和微博形式

我认为您正在尝试在micropost user视图中创建新的show。如果是这样,您可以包括以下内容:

<%= form_tag(controller: :microposts, action: :create) do %>
  ...
<% end %>

当您提交表单时,它会调用create控制器中的操作microposts

答案 1 :(得分:0)

您是否正在学习Hartl的教程?好吧,无论如何,你所要做的就是在控制器动作的视图中初始化你需要的所有实例变量:

users / 18可能指向用户#show,因此您需要添加类似

的内容
class UsersController < ApplicationController
  ...
  def show
    @micropost = current_user.microposts.build 
  ...
  end
...
end

在controllers / users_controller.rb中(或适合您模型的东西)初始化微帖表格的新微博,或者只是

@micropost = Micropost.new

如果您没有/需要与用户建立关联。 (Michael Hartl正在主页上这样做。)