2013-12-09 4 views
0

Привет, ребята в моей странице просмотра индекса, я имею эту ошибку в этой строке:Как не я решаю Нет маршрут соответствует

<td id="change"><%= link_to 'Analyze',user_generator_path(current_user.generators)%></td> 

код для этой строки:

 <% if generator.result.present?%> 
      <td>    <%= generator.result.ncbi_ref_seq %></td> 
      <td>    <%= generator.result.genome_sample %></td> 
      <td align="center"><%= generator.result.binding_times %></td> 
      <td id="change"></td> 
      <td id="change"><%= link_to 'Delete', generator, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
     <% else %> 
      <td></td> 
      <td></td> 
      <td></td> 
      <td id="change"><%= link_to 'Analyze',user_generator_path(current_user.generators)%></td> 
      <td id="change"><%= link_to 'Delete', generator, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
     <% end %> 

Я получаю

No route matches {:action=>"show", :controller=>"generators", :user_id=>#<ActiveRecord::Associations::CollectionProxy [#<Generator id: 1, primer_length: 20, no_A: nil, no_T: nil, no_G: nil, no_C: nil, melting_temp: nil, choice: nil, random_primer_generated: nil, user_seq: nil, f_primer: nil, r_primer: nil, result_choice: nil, user_id: 1, created_at: "2013-12-09 09:27:39", updated_at: "2013-12-09 09:27:39">]>, :id=>nil, :format=>nil} missing required keys: [:id] 

Generator.rb

def new 
    @generator = current_user.generators.build(params[:generator]) 
    end 

def create  
    @generator = current_user.generators.build(params[:generator]) 
    @generator.user_id = current_user.id if current_user 
    @generator.choice = params[:choice] 
     if params[:choice] == 'Randomly' 
      @generator.random_generate(generator_params) 
     elsif params[:choice] == 'Specified ATGC' 
      @generator.specified_ATGC(params[:no_A],params[:no_T],params[:no_G],params[:no_C]) 
     elsif params[:choice] == 'Seating' 
      @generator.seating(params[:user_seq]) 
     end 

    @generator.result_choice=params[:result_choice] 
    @generator.save 
    respond_to do |format| 
     if @generator.result_choice == 'Yes' 
       format.html { redirect_to(user_generator_path(@generator)) } 
     else 
       format.html { redirect_to(user_generators_path(@generator)) } 
     end 
    end 

    end 

Как это исправить? я просто хочу отображать генераторы пользователей. если есть результат, то user.generators.result

Route.rb

root :to => 'welcome#index' 
    get '/auth/:provider/callback' => 'sessions#create' 
    post '/auth/identity/callback' => 'sessions#create' 

    resources :users do 
    resources :generators 
    resources :results 
    end 
    resources :identities 
+0

Похоже, что ваш маршрут вложен? –

+0

Можете ли вы разместить свой файл routes.rb, пожалуйста? –

+0

update.Yes Я не уверен, что мне нужно использовать мелкие вложенные или глубокие. – BC2

ответ

1

Для меня это выглядит как это преступник:

:id=>nil 

У нас была эта проблема с вложенными маршрутами до (где у вас есть /users/15/articles/215/edit)


Это немедленное исправление:

user_generator_path(:user_id => current_user.generators, :id => variable_here) 

Тем не менее, кажется, есть более глубокая проблема с вашей системой, а именно, что вы создали то, что кажется member route, который нужен id параметра, чтобы он работает правильно


системной Fix

вы упоминаете вы «просто хотите отобразить генераторы пользователя», которые сделали бы index коллекцию маршрут для пользователя generators?

Способ отображения это, во-первых, изменить ссылку, чтобы открыть действие index контроллера generators. В настоящее время ваш контроллер показывает, что вы либо загружаете действия new, либо create, и ваша ошибка относится к открытию действия show. Шоу действие, в частности, требует id элемента, который, где эта ошибка наступающей образует

Из звуков этого, я только путь к index пути для users_generators_path. Там вы можете отображать генераторы для пользователя без требования для конкретных id

+0

. Пользователь может генерировать генераторы. Но ошибка возвращает мне null для сгенерированных вещей. 1 пользователь имеет много генераторов.Генератор has_one result – BC2

+0

ну, собственно, причина для размещения шоу - это то, что пользователь может связать результат с генератором. Предположим, что пользователь делает только генератор, а позже они хотят узнать результат, поэтому они просто нажимают на анализ, и он будет показывать шоу и внутри шоу, они могут создавать результат и связываться с генератором. поэтому, в конце концов, я получу user.generator.result – BC2

+0

Хорошо, так что вы действительно хотите показать, это результат генератора? Если это так, вам нужно изменить свои маршруты следующим образом: 'resources: users do Ресурсы: Генераторы делают ресурсов: результаты end end' –

Смежные вопросы