2016-05-03 8 views
1

新しい質問が一番下に表示されます。アプリケーションの2番目の部分にコメントを作成するためのレールフォームを作成する(モーダル)

写真はexample.com/photos/:id ユーザー写真で示され

は私がexample.com/usersに表示できるフォームを作成したいexample.com/users/2

でページ分割されています/ 2コメントを作成します。私は現在example.com/photos/:idでコメントを作成することができます。しかし、example.com/users/2のインスタンス変数はexample.com/photos/:idとは異なっていると表示され、それぞれのユーザーの写真が道のようなInstagramのにページ分割されている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 

では動作しません。モーダルを表示するためにクリックされた行のサム。

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") %> 

. 
. 
. 

<% =のform_for([photo.id、photo.id.comments.build])を行う| F | %>

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

<% end %></s> 

上記のフォームは、Herokuのエラーメッセージが動作しません。

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

23は次のようになります。私の最後の(最初の)写真のID。

編集:私はまた、しかし、これはフォームが配置されている私のモーダルを閉じているredirect_to :backredirect_to photo_path(@photo)からCommentsControllerを変更

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

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

<% end %> 

:これは、下記答えたように変更します。 @comment.saveの後に新しいコメントを表示してモーダルを開いたままにするには、どのようなコードが必要ですか?

+0

ティミーにフォーム、質問は何ですか? – Uzbekjon

+0

私が使用しているフォームは機能しません。 –

+0

"うまくいかない"と定義して質問に追加するべきだと思います。しかし、それはちょうど私かもしれません。 – Uzbekjon

答えて

0

変更

<%= form_for([photo, Comment.new]) do |f| %> 
関連する問題