0
好吧,我查看了很多答案,发布在stackoverflow和许多其他网站上,因为我知道这是一个常见问题,但我似乎无法得到它,并真的很感激,如果有人能指出我在正确的方向。我试图在这里实现的真的很简单,我试图从另一个模型,后到我的主页,这是我创建的另一个控制器呈现一个新的表单。因此,基本上在我的主页上显示了由用户创建的所有最近的后的列表。此外,我希望用户能够直接从主页添加新帖子。现在我有它显示,但点击提交按钮什么也没有。如何在另一页上渲染另一个模型表单?
这里是POST形式
<div class="panel panel-primary">
<div class="container">
<div class="panel-heading">
<%= image_tag @post.user.avatar.url(:post_pic), class:"img-thumbnail" %>
<%= @post.user.name %>
<%= form_for(@post) do |f| %>
<% if @post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% @post.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :content %><br>
<%= f.text_area :content %>
</div>
<div class="field">
<%= f.file_field :avatar %>
</div>
</div>
</div>
<div class="panel-footer">
<div class="actions">
<%= f.submit %>
</div>
</div>
<% end %>
</div>
这里是我的主页控制器
class HomeController < ApplicationController
def index
if user_signed_in?
@posts = Post.all
@post = current_user.posts.build
else
redirect_to new_user_registration_path
end
end
def create
@post = current_user.posts.build(post_params)
@post.save
end
private
# Use callbacks to share common setup or constraints between actions.
def set_post
@post = Post.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def post_params
params.require(:post).permit(:user_id, :content, :avatar)
end
end
最后我的主页指数
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-5">
<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>
<%= render 'posts/form' %>
<% @posts.each do |post|%>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
<%= image_tag post.user.avatar.url(:post_pic), class:"img-thumbnail" %>
<%= post.user.name %>
</h3>
</div>
<div class="panel-body">
<%= post.content %></br></br>
<% if post.avatar.file? %>
<%= image_tag post.avatar.url(:test), class:"img-thumbnail" %></br>
<% end %>
</div>
</div>
<% end %>
</div>
</div>
条路线
Rails.application.routes.draw do
resources :posts
get 'users/index'
get 'users/show'
root 'home#index'
devise_for :users
请向我们展示您的路线,'form_for(@post)'将表单发送到'/ posts' – sled