【问题标题】:Failed to pass the id via a link通过链接传递 id 失败
【发布时间】:2015-12-30 00:13:21
【问题描述】:

我在传递 link_to 的变量 ID 时遇到此错误。我无法读取下一页中的变量 (blog_details.html.erb)

错误:

ActiveRecord::RecordNotFound in HomeController#blog_details

Couldn't find Post without an ID

我的家庭控制器:

class HomeController < ApplicationController

  def blog
    @posts = Post.all
  end

  def blog_details
    @post = Post.find(params[:id])   
  end

end

我与变量的链接:

<div class="post-title">                
  <h2 class="title">
    <%= link_to (post.titulo), :controller => 'home', 
          :action => 'blog_details', :post_id => post.id %>
  </h2>
</div>

有人可以帮我解决这个错误吗?

【问题讨论】:

    标签: ruby-on-rails ruby variables


    【解决方案1】:

    应该是这样的:

    def blog_details
      @post = Post.find(params[:post_id])   
    end
    

    <%= link_to (post.titulo), :controller => 'home', 
          :action => 'blog_details', :id => post.id %>
    

    【讨论】:

      【解决方案2】:

      问题是您正在寻找params[:id] 但传入:post_id。所以要么找params[:post_id],要么传入:id =&gt; post.id

      【讨论】:

        【解决方案3】:

        你传递的是 post_id 而不是 id :

        这应该有效:

        <div class="post-title">                
          <h2 class="title">
            <%= link_to (post.titulo), :controller => 'home', 
                  :action => 'blog_details', :id => post.id %>
          </h2>
        </div>
        

        考虑使用命名路由或资源,这样你就可以以这样的方式结束:

        &lt;%= link_to post.titulo, post %&gt;

        【讨论】:

          【解决方案4】:

          home#blog_details 的路径是什么?.. 使用该路径,您可以执行以下操作:

          <%= link_to (post.titulo),  blog_details_path(post) %>
          

          【讨论】:

            猜你喜欢
            • 2017-05-27
            • 1970-01-01
            • 2015-04-04
            • 2023-03-11
            • 1970-01-01
            • 2016-02-24
            • 2021-08-15
            • 2022-01-19
            • 1970-01-01
            相关资源
            最近更新 更多