【问题标题】:In Ruby on Rails, how can I pass params[:id]?在 Ruby on Rails 中,如何传递 params[:id]?
【发布时间】:2014-03-17 19:34:46
【问题描述】:

在我的主页上有:

# /views/static_pages/home.html.erb
<%= render @posts %>

和:

# /views/posts/_post.html.erb
<%= link_to 'haha', ?????? %>

通过控制器:

class StaticPagesController < ApplicationController
  def home
    @posts = Post.all.paginate(page: params[:page])
  end
end

和:

class PostsController < ApplicationController
  def show
   @post = Post.find(params[:id])
  end
end

我要获取页面:

# /views/posts/show.html.erb
<%= @post.name %>

通过点击“哈哈”链接传递params[:id]获取页面/posts/:id。

但我不知道该怎么做才能替换??????。

另外,路线是:

Tradeincu::Application.routes.draw do  
  resources :users, :only => [:show]
  match '/users/:id', to: 'users#show', via: 'get'
  resources :posts
end

【问题讨论】:

标签: ruby-on-rails ruby url params


【解决方案1】:

有很多方法可以做到这一点,你可以使用:

<%= link_to 'haha', post_path(post) %>

或者:

<%= link_to "haha", controller: "posts", action: "show", id: post %>

您可以查看文档以及一些示例here

【讨论】:

  • 不工作,它说'没有路由匹配 {:id=>nil} 缺少必需的键:[:id]'
  • @FengDing 哪个动作是呈现“_post”视图的动作?
  • 我认为它的 。顺便提一句。 Stefan 的解决方案解决了这个问题。谢谢你们。和例子。
  • @FengDing 我没有意识到你在渲染@posts。在这种情况下,您应该使用post 而不是@post。我会为未来的观众更新我的答案
猜你喜欢
  • 2022-08-11
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多