意外的路线“群/ 2/3?”

时间:2013-12-05 15:37:31

标签: ruby-on-rails ruby-on-rails-3 routes

当我设置一些指向groups /:id(groups#show)的链接时,我遇到了麻烦。 我希望用户在我的系统上存在现有组时移动到groups /:id并编写下面的代码。

 <% if @existing_groups_isbns.include? i.get('ItemAttributes/ISBN') %>
 <%= link_to '既存グループへ', group_path(@existing_groups_ids.each{|id| id}) %>

首先,我创建了一个小组。那时,它工作。链接是“groups / 2”。 但是当我之后创建一个新组时,该链接变为旧组和新组的“组/ 2/3”,尽管我希望旧组的“组/ 2”和新组的“组/ 3”。我不知道为什么会这样。你能告诉我为什么以及如何解决这个问题吗?

☆index.html.erb

<h1>検索結果</h1>

<table class="table">
  <tr>
    <th>image</th>
    <th>タイトル</th>
    <th>著者</th>
    <th>出版年</th>
    <th>出版社</th>
    <th>page</th>
    <th>Link</th>
 </tr>
 <% if @items.present? %>
  <% @items.each do |i| %>
    <tr>
      <td> <%= link_to image_tag(i.get('SmallImage/URL'), {:style => 'border: none;'}), i.get('DetailPageURL') %></td>
      <td> <%= link_to i.get('ItemAttributes/Title'), i.get('DetailPageURL') %></td>
      <td> <%= i.get('ItemAttributes/Author') %></td>
      <td> <%= i.get('ItemAttributes/PublicationDate')%></td>
      <td> <%= i.get('ItemAttributes/Publisher') %></td>
      <td> <%= i.get('ItemAttributes/NumberOfPages')%></td>
      <td>
       <% if @existing_groups_isbns.include? i.get('ItemAttributes/ISBN') %>
         <%= link_to '既存グループへ', group_path(@existing_groups_ids.each{|id| id}) %>
       <% else %>
         <%= link_to '新規作成', {:controller => 'groups', :action => 'new', :name => i.get('ItemAttributes/Title'),:author => i.get('ItemAttributes/Author'), :publish => i.get('ItemAttributes/Publisher'), :published => i.get('ItemAttributes/PublicationDate'), :isbn => i.get('ItemAttributes/ISBN'), :page => i.get('ItemAttributes/NumberOfPages'), :imageurl=>i.get('MediumImage/URL')} ,class: "btn btn-midium btn-primary"%>
      <% end %> <!-- if @existing_groups_isbns-->     
      </td>
   </tr>
 <% end %><!-- each do-->
<% else %>
 見つかりませんでした。
 <% end %> 
</table>

☆index_controller

class IndexController < ApplicationController
 def index
    @keyword = params[:keyword]
    if @keyword.present?
      Amazon::Ecs.debug = true
      res = Amazon::Ecs.item_search(params[:keyword], 
          :search_index => 'All', :response_group => 'Medium')
      @items = res.items
    search_isbns = @items.map{ |isbns| isbns.get('ItemAttributes/ISBN')}
    @existing_groups_isbns = Group.select(:isbn).where(:isbn => search_isbns).map(&:isbn)
    @existing_groups_ids = Group.where(:isbn => search_isbns).map{|g| g.id}
   end
 end

1 个答案:

答案 0 :(得分:0)

groups_controlller.rb

class GroupsController < ApplicationController
  def add
     @group = Groupe.find(params[:group])
     @group.users.create(current_user)        
  end
end

的routes.rb

resources :groups do
  get :add # or patch :add
end

view.haml

= link_to 'add to #{groupe.name}', add_group_path(@group) #, method: :patch