【发布时间】:2017-07-19 02:29:25
【问题描述】:
我正在尝试使用部分视图的控制器而不是我渲染它的视图。我的情况如下;
我有用户,用户可以发布一些东西。这就是为什么我有两个控制器和模型(用户和帖子)。
在用户的页面中,有一个文本区域来获取内容的输入和按钮来发布。我已将此视图 .../views/posts/_new.html.erb 编写为局部视图,并在 .../ 中呈现此 partial views/users/index.html.erb 并使用部分视图,我使用了这段代码。
<%= render 'posts/new' %>
为了发帖,我写了这个方法;
posts_controller.rb
def new
@post = Post.new
end
def edit
@post = Post.find(params[:id])
end
def create
@user = User.find(params[:user_id])
@post = @user.posts.create(post_params)
if @post.save
redirect_to root_path
else
render 'new'
end
end
.../views/posts/_new.html.erb
<%= form_for :post do |f| %>
<%= f.text_area :content, :class => "form-control", "rows" => "5", "id" => "comment", "placeholder" => "Write something to share with your mates ..." %><br/>
<%= button_tag "Share", :class => "btn btn-primary pull-right" do %>
<span class="glyphicon glyphicon-share-alt"></span>
<% end %>
<% end %>
这里的问题是,当我在局部视图中单击按钮时,它会转到设计控制器的 Users#RegistrationController。为什么?
Here,guide 告诉我们,如果局部视图和渲染它的视图之间存在关系,rails 会理解我们想要做什么,并改用局部视图的控制器。我在这里错过了什么吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 devise partial-views