底部的新问题。
照片显示在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 %>
我还将CommentsController
从redirect_to photo_path(@photo)
更改为redirect_to :back
但是这样就关闭了表单所在的模式。在@comment.save
之后我需要使用哪些代码来保持模态打开并且新注释可见?
答案 0 :(得分:0)
将表单更改为
<%= form_for([photo, Comment.new]) do |f| %>