0

私の link_to は次のようになります。

<%= link_to image_tag(user_likes_selection.page_picture, :image_id =>     
user_likes_selection.id, :controller => :preferences_controller, 
:action => :checked_average_with_profile) %>

私のコントローラー、preferences_controller には、checked_average_with_profile というメソッドがあります。これは、私が知る限り、画像をクリックしても呼び出されません。

link_to から生成される html コードは次のとおりです。

<img>
<a href="/preferences"><img action="checked_average_with_profile" alt="Soul_surfer_film"     
controller="preferences_controller" height="70%" image_id="3254" 
src="/assets/soul_surfer_film.jpg" width="70%" /></a>
</img>

画像がクリックされたときにコントローラ コードが実行されないのはなぜですか?

4

5 に答える 5

1

このような場合、ブロック形式を使用するとコードが読みやすくなります。link_to

<%= link_to { :image_id => user_likes_selection.id, :controller => :preferences, :action => :checked_average_with_profile } do %>
  <%= image_tag(user_likes_selection.page_picture %>
<% end %>

asルートでは、名前付きルートを使用できるようにオプションを渡すこともできます。あなたのルートが次のように見えると仮定すると

match '/preferences/checked_average_with_profile/:image_id' => 'preferences#checked_average_with_profile', as: :check_average_profile

を使用してリンクを簡素化できます

link_to image_tag(user_likes_selection.page_picture), check_average_profile_path(user_likes_selection.id)
于 2013-03-08T07:59:35.187 に答える
0

最後ではなく、後にパレンを置きますuser_likes_selection.id。画像タグのプロパティとlink_toプロパティを混在させています。

試す:

<%= link_to image_tag(user_likes_selection.page_picture, :image_id =>     
user_likes_selection.id), {:controller => :preferences, 
:action => :checked_average_with_profile} %>
于 2013-03-08T07:53:30.870 に答える
0

試す:

<%= link_to image_tag(user_likes_selection.page_picture), url_for({:controller => 'preferences_controller', :action => 'checked_average_with_profile', :image_id =>  user_likes_selection.id}) %>
于 2013-03-08T08:28:42.843 に答える
0

これが私のコードでのやり方です。

<%=link_to(image_tag(user_likes_selection.page_picture), check_average_profile_path(user_likes_selection.id)) %>
于 2013-03-08T08:01:06.837 に答える
-1

最後に、リソースにアクションを含むコレクションを追加することで問題を解決しました:

resources :preferences do
  collection do
    get 'save_new_scores_to_profile'
    get 'checked_average_with_profile'
  end
end

次に、view コードを変更して、image_id 変数をコントローラーに渡すことができるようにしました。

<%= link_to image_tag(user_likes_selection.page_picture,
    checked_average_with_profile_preferences_path(:image_id => 
    user_likes_selection.id) %>

私のコントローラーでは、params で image_id を取得し、最後に redirect_to を配置するようにしました。

def checked_average_with_profile
  params[:image_id]
  redirect_to preferences_url
end

この問題が発生した場合、重要な部分は、指定したコントローラー パスの括弧内に ID (それが何であれ) を渡し、ルーティング ファイルで MEMBER の代わりに COLLECTION を使用することです。

于 2013-03-09T05:53:57.277 に答える