在Windows中使用ruby链接到另一个视图

时间:2017-03-23 01:01:22

标签: ruby-on-rails ruby

我正在做一个简单的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"

1 个答案:

答案 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。