我如何解决没有路线匹配

时间:2013-12-09 09:36:36

标签: ruby-on-rails ruby-on-rails-4

大家好,在我的索引视图页面中,我在这一行中遇到了这个错误:

<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

1 个答案:

答案 0 :(得分:1)

对我而言,这似乎是罪魁祸首:

:id=>nil

我们之前已经遇到过嵌套路由的问题(你有/users/15/articles/215/edit


这是一个即时修复:

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

但是,您的系统似乎存在更深层次的问题,即您创建的似乎是member route的内容,需要id参数才能使其正常工作


系统修复

您提到“只想显示用户的生成器”,这将为用户index创建generators收集路由?

显示此方法的方法是首先更改链接以打开index控制器的generators操作。目前,您的控制器显示您要么加载newcreate操作,而您的错误与打开show操作有关。显示操作特别需要项目的id,这是此错误的形式

从它的声音中,我只是路由到index的{​​{1}}路径。在那里,您可以为用户显示生成器,而无需特定的users_generators_path