1

画像がクリックされたときにアプリのデータベースのブール値を更新するために、ここ Stackoverflow に投稿された回答に従ってみようとしています ( Rails - How to update a single attribute in controller )。

ただし、画像を含むページを読み込むと、次のエラーが発生します。

未定義のメソッド `toggle_is_contribution_comments_path' for #<#:0x000000053d8150>

私のルートファイル:

resources :comments do
    member do
      put :toggle_is_contribution
    end
    end

コントローラ:

def toggle_is_contribution
    @comment = Comment.find(params[:work_id])
    @comment.toggle!(:is_contribution)

     respond_to do |format|
    flash[:success] = "Work updated"
    format.html { redirect_to root_path }
    format.js
  end
  end

見る:

<%= image_tag comment.user.photo.url(:avatar) %></span>&nbsp; <%= link_to comment.user.full_name, comment.user if comment.user %>
                                                <% if current_user == @work.user %>
                            <span class = "contribution">
                            <%= link_to image_tag("/assets/list_star.png"), comment, toggle_is_contribution_comments_path(comment),
                            :size => "15x15", :align => "right", :title=> "Add contribution to your work", :method=> :put %>
                            </span>
                        <% end %>

アプリがメソッドを認識しないのはなぜですか? 私は何を間違えましたか?モデルを確認しましたが、attr_accessible には is_contribution が含まれています

ありがとう!-b

編集 1: レーキ ルート:

toggle_is_contribution_comment PUT    /comments/:id/toggle_is_contribution(.:format) comments#toggle_is_contribution
                      comments GET    /comments(.:format)                            comments#index
                               POST   /comments(.:format)                            comments#create
                   new_comment GET    /comments/new(.:format)                        comments#new
                  edit_comment GET    /comments/:id/edit(.:format)                   comments#edit
                       comment GET    /comments/:id(.:format)                        comments#show
                               PUT    /comments/:id(.:format)                        comments#update
                               DELETE /comments/:id(.:format)                        comments#destroy

編集2:

メソッド名を以下の Mischa の回答に編集した後、stringify キー エラーが発生します。

"/comments/1/toggle_is_contribution":String の未定義メソッド `stringify_keys'

編集3:

link_to を修正しましたが、この未定義のエラーが発生しました:

未定義のメソッド `toggle_is_contribution_comments_path' for #<#:0x00000004438ba0>

4

1 に答える 1

1

以下を使用する必要があります。

toggle_is_contribution_comment_path(comment)

_pathの出力の最初の列に表示される内容に固執してくださいrake routes

また、あなたlink_toは間違っています。それ以外の:

<%= link_to image_tag("/assets/list_star.png"), comment, toggle_is_contribution_comment_path(comment), etc.

行う:

<%= link_to image_tag("/assets/list_star.png"), toggle_is_contribution_comment_path(comment), etc.

の 2 番目の引数link_toは URL であることに注意してください。だからここはいらないcommenttoggle_is_contribution_comment_path(comment)2 番目の引数として渡すだけで十分です。

于 2013-05-09T01:41:45.013 に答える