【问题标题】:How do i solve No route matches我如何解决没有路线匹配
【发布时间】:2013-12-26 08:54:26
【问题描述】:

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

<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

【问题讨论】:

  • 看起来你的路线是嵌套的?
  • 你能发布你的 routes.rb 文件吗?
  • 更新。是的,我不确定我需要使用浅嵌套还是深嵌套。
  • 感谢您的更新 - 所以失败了,所以我将更新我的答案,我会为此做些什么
  • 谢谢。我以为是我的连接问题

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


【解决方案1】:

在我看来,这就是罪魁祸首:

:id=>nil

我们之前在嵌套路由中遇到过这个问题(您有 /users/15/articles/215/edit


这是一个即时修复:

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

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


系统修复

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

显示的方法是首先更改链接打开generators控制器的index动作。目前,您的控制器显示您正在加载 newcreate 操作,并且您的错误与打开 show 操作有关。 show 动作特别需要项目的id,这是出现此错误的地方

从它的声音来看,我只是路由到users_generators_pathindex 路径。在那里,您可以为用户显示生成器,而无需特定的 id

【讨论】:

  • 是的,用户可以生成生成器。但是错误是为生成的东西返回 null 。 1 个用户有许多发电机。生成器 has_one 结果
  • 其实放 show 的原因是为了让用户可以将结果链接到生成器。假设用户只做生成器,然后他们想找出结果,所以他们只需单击分析,它将直接显示和内部显示,他们可以创建结果并与生成器链接。所以最后,我会得到 user.generator.result
  • 好的,那么你真正想要展示的是生成器的结果?如果是这种情况,您需要修改您的路线,如下所示:resources :users do resources :generators do resources :results end end
  • 好的,谢谢您的回复!你有没有试过我做的小修复:user_generator_path(:user_id =&gt; current_user.id, :id =&gt; generator.id)
  • 你为什么不试试这个:user_generator_path(:user_id =&gt; current_user.id, :id =&gt; generator.id), :method =&gt; :delete
猜你喜欢
  • 1970-01-01
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2016-02-04
  • 2012-10-11
  • 2017-07-13
相关资源
最近更新 更多