我正在做一个简单的CR并尝试放置一些链接/按钮(添加,编辑等),当用户点击添加它将直接到该视图..
问题:当我点击特定链接/按钮时,如何指示将加载哪个视图?
Index.html.erb
<h1>My First CRUD!</h1>
<%= link_to "Add Page", posts_path %>
<%= link_to "Edit Page", posts_path %>
<%= link_to "Showx Page", posts_path %>
帖子控制器
class PostsController < ApplicationController
def index
end
def addItem
end
def create
@post = Post.new(post_params)
@post.save
redirect_to @post
end
def show
@post = Post.find(params[:id])
end
private
def post_params
params.require(:post).permit(:item, :description)
end
end
路线
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
resources :posts
root "posts#index"
resources :posts
root "posts#addItem"
答案 0 :(得分:1)
您可以在routes.rb
中声明所需的所有根路由,但它只会获取首先声明的路由,如果定义有误,则无关紧要,它不会告诉你。
link_to
将重定向的路由是您声明为第二个参数的路径(在本例中)。
在您的示例中,您有三个link_to
标记,这些标记指向相同的路径。如果您想制作&#34;编辑&#34; link_to
重定向到posts#edit
方法,您首先必须在edit
中创建posts_controller
方法,然后将其添加到您的路线中:
get '/posts/edit/:id', to: 'posts#edit'
但是在你的情况下,因为你拥有resources :posts
它会让你全部工作并创建posts#controller
中定义的所有路由,用什么资源来映射一些相关的请求单个控制器中的操作,这就是说;
当Rails应用程序收到以下请求时:
GET /posts/edit/1
当您通过传递1
的ID来编辑某个帖子时会发生什么,然后它要求路由器将其映射到控制器操作。如果第一个匹配的路由是:
resources :posts
然后Rails将这个请求发送到帖子控制器上的编辑操作,{id:&#39; 1&#39;在params。
简短回答,要创建一个公共<a>
代码,请创建一个link_to
,添加一个文本以指定此重定向的位置,然后是您已定义的路线,您可以查看它们如果您使用Rails 5,则运行rails routes
;如果您使用Rails&lt; bin/rake routes
,则运行B
5。