2

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

我想做的,是把用户信息和微博形式放在同一个视图上。

问题是这个页面的 url 是 www.mywebsite.com/users/18 所以我只能访问用户控制器。

我试着做:

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

我找到的唯一解决方案是将所有东西都放在一个控制器上,但这会一团糟。

我真的想要为每个单独的控制器。

所以我不知道该怎么做。任何的想法?

4

2 回答 2

3

我想做的,是把用户信息和微博形式放在同一个视图上

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

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

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

于 2012-07-29T12:47:13.830 回答
0

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

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

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

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

@micropost = Micropost.new

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

于 2012-07-29T12:42:25.337 回答