创建rails表单以在应用程序的第二部分(模态)中构建注释

时间:2016-05-03 21:20:53

标签: ruby-on-rails forms

底部的新问题。

照片显示在example.com/photos/:id上 用户照片在example.com/users/2

中分页

我想创建一个可以在example.com/users/2上显示的表单来构建注释。我目前可以在example.com/photos/:id上建立评论。但是,example.com/users/2中的实例变量与example.com/photos/:id不同,不适用于CommentsController > def create

PhotosController

  def show
    @photo = Photo.find(params[:id])
  end

CommentsController

  def create
    @photo = Photo.find(params[:photo_id])
    @comment = @photo.comments.build(comment_params)
    @comment.save
    redirect_to photo_path(@photo)
  end   

UsersController 

  def show
    @user = User.find(params[:id])
    @photos = @user.photos.order('created_at desc').paginate(page: params[:page], per_page: 12)
  end

每个用户照片都以类似于Instagram的方式分页,在行中显示一个拇指以显示模式。

Users > show.html.erb 

.
.
<% @photos.in_groups_of(3, false).each do |group| %>
  <% group.each do |photo| %>
    <a data-toggle="modal" href=<%="#"+"#{photo.id}"%>>
      <div class="col-xs-4">
        <div class="thumb">
          <%= image_tag(photo.picture.thumb.url, class: "img-responsive") %>

.
.
.

&lt;%= form_for([photo.id,photo.id.comments.build])do | f | %GT;

   <%= f.label :content %><br>
   <%= f.text_area :content %>
   <%= f.submit %>

<% end %></s>   

上面的表单不起作用,Heroku错误消息:

 ActionView::Template::Error (undefined method `comments' for 23:Fixnum): 

23是我上一张(第一张)照片的ID。

编辑:以下对此进行了解答,将其更改为:

<%= form_for([photo, Comment.new]) do |f| %>

   <%= f.label :content %><br>
   <%= f.text_area :content %>
   <%= f.submit %>

<% end %>

我还将CommentsControllerredirect_to photo_path(@photo)更改为redirect_to :back但是这样就关闭了表单所在的模式。在@comment.save之后我需要使用哪些代码来保持模态打开并且新注释可见?

1 个答案:

答案 0 :(得分:0)

将表单更改为

<%= form_for([photo, Comment.new]) do |f| %>