操作视图::模板::错误(缺少块):使用simple_form_for时



我创建了一个显示帖子的页面,如果我打开任何特定的帖子,请说"localhost:3000/newsfeeds/14"。我也想在其中呈现评论和评论形式。我的路线是:

   newsfeed_comments GET    /newsfeeds/:newsfeed_id/comments(.:format)          comments#index
                     POST   /newsfeeds/:newsfeed_id/comments(.:format)          comments#create
new_newsfeed_comment GET    /newsfeeds/:newsfeed_id/comments/new(.:format)      comments#new
edit_newsfeed_comment GET    /newsfeeds/:newsfeed_id/comments/:id/edit(.:format) comments#edit
    newsfeed_comment GET    /newsfeeds/:newsfeed_id/comments/:id(.:format)      comments#show
                     PATCH  /newsfeeds/:newsfeed_id/comments/:id(.:format)      comments#update
                     PUT    /newsfeeds/:newsfeed_id/comments/:id(.:format)      comments#update
                     DELETE /newsfeeds/:newsfeed_id/comments/:id(.:format)      comments#destroy
           newsfeeds GET    /newsfeeds(.:format)                                newsfeeds#index
                     POST   /newsfeeds(.:format)                                newsfeeds#create
        new_newsfeed GET    /newsfeeds/new(.:format)                            newsfeeds#new
       edit_newsfeed GET    /newsfeeds/:id/edit(.:format)                       newsfeeds#edit
            newsfeed GET    /newsfeeds/:id(.:format)                            newsfeeds#show
                     PATCH  /newsfeeds/:id(.:format)                            newsfeeds#update
                     PUT    /newsfeeds/:id(.:format)                            newsfeeds#update
                     DELETE /newsfeeds/:id(.:format)                            newsfeeds#destroy
                root GET    /                                                   newsfeeds#index

这是注释控制器:

class CommentsController < ApplicationController
  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.create(comment_params)
    @comment.user_id = current_user.id
    if @comment.save
        redirect_to newsfeed_path
    else
        render 'new'
    end
end
private
def comment_params
    params.require(:comment).permit(:content)
end
end

下面是新闻源控制器:

class NewsfeedsController < ApplicationController
before_action :find_post, only: [:show, :destroy, :edit, :update]
def index
    @posts = Post.all.order("created_at DESC")
end
def show
    # before_action is taking care of all 4 i.e(sho,edit,update and destroy)..Keeping it DRY
end
def new
    @post = current_user.posts.build
end
def create
    @post = current_user.posts.build(post_params)
    if @post.save
        redirect_to root_path
    else
        render 'new'
    end
end
def edit
end
def update
    if @post.update(post_params)
        redirect_to newsfeed_path(@post)
    else
        render 'edit'
    end
end
def destroy
    @post.destroy
    redirect_to root_path
end
private
def post_params
    params.require(:post).permit(:content)
end
def find_post
    @post = Post.find(params[:id])
end

结束

在_form.html

<%= simple_form_for ([@post, @post.comments.build]), url: newsfeed_comments_path(@post.id) do |f| %>
  <%= f.input :content,label: false, placeholder: "write your comment here..." %>
  <%= f.button :submit, :class => 'btn-custom' %>
<% end %>

我收到此错误:

ActionView::Template::Error (Missing block): 1: <%= simple_form_for ([@post, 
@post.comments.build]), url: newsfeed_comments_path(@post.id) do |f| %> 2: 
<%= f.input :content,label: false, placeholder: "write your comment here..." 
%> 3: <%= f.button :submit, :class => 'btn-custom' %> 4: <% end %>

提前感谢您的支持。

这是显示.html渲染_form的位置,

<div class="col-md-10 col-md-offset-1">
    <div>
        <h3><%= @post.content %></h3>
        <p class=""><%= time_ago_in_words(@post.created_at) %> ago </p>
    </div>
    <div>
        <h4>Comments:</h4>
        <p><%= render @post.comments %></p>
        <h4 class="reply-to-msg">Leave your Comment here..</h4>
        <%= render 'comments/form' %>
    </div>
    <div>
        <%= link_to "Back", root_path, class: "btn btn-default" %>
        <%= link_to "Edit", edit_newsfeed_path, class: "btn btn-primary" %>
        <%= link_to "Delete", newsfeed_path, method: :delete, data: { confirm: "You Sure Master..?"} , class: "btn btn-danger" %>
    </div>
</div>

这里的路线:

devise_for :users
resources :newsfeeds do
  resources :comments
end
root 'newsfeeds#index'
这是一个

括号问题。方法名称和括号之间有一个空格。应该是

<%= simple_form_for [@post, @post.comments.build], url: newsfeed_comments_path(@post.id) do |f| %>

<%= simple_form_for([@post, @post.comments.build], url: newsfeed_comments_path(@post.id)) do |f| %>

相关内容

  • 没有找到相关文章

最新更新