2016-09-04 1 views
0

Я новичок в рельсах и застрял, возможно, легко ответить на вопрос. У меня есть контроллер и модель (Инструменты/Инструмент), и я связал edit_path со страницы показа Инструмента. Но как я могу связать его с моей страницей индекса и поиска?Rails 4: Как правильно привязать_ edit_path к индексу?

Вот соответствующий код: /app/controllers/tools_controller.rb

class ToolsController < ApplicationController 
    before_action :find_tool, only: [:show, :edit, :update, :destroy] 

    def index 
     @tools = Tool.where(user_id: current_user).order("created_at DESC") 
     @user = current_user 
    end 

    def search 
     @tools = Tool.all 
    end 

    def show 
    end 

    def new 
     @tool = current_user.tools.build 
    end 

    def create 
     @tool = current_user.tools.build(tool_params) 

     if @tool.save 
      redirect_to tools_path 
     else 
      render 'new' 
     end 
    end 

    def edit 
    end 

    def update 
     if @tool.update(tool_params) 
      redirect_to tools_path 
     else 
      render 'edit' 
     end 
    end 

    def destroy 
     @tool.destroy 
     redirect_to tools_path 
    end 

    private 

    def find_tool 
     @tool = Tool.find(params[:id]) 
    end 

    def tool_params 
     params.require(:tool).permit(:title, :subtitle, :url) 
    end 
end 

/app/views/tools/show.html.haml

%h1= @tool.title 

= link_to "Back", :back 
= link_to @tool.user.try(:username), '/users/'[email protected]_id.to_s 

= link_to "Edit", edit_tool_path(@tool) 
= link_to "Delete", tool_path(@tool), method: :delete, data: { confirm: "Are you sure?" } 
enter code here 

/app/views/tools/index.html.haml

%h2 My Tools 
- @tools.each do |tool| 
    %h2= link_to tool.title, tool 
    %p= tool.subtitle 
    %p= link_to "Edit", edit_path 
    %p= time_ago_in_words(tool.created_at) 



-if @user.use_gravatar? 
    = image_tag gravatar_for @user 
- else 
    = image_tag @user.avatar_filename.url 

%h1= @user.username 

= link_to "Edit", edit_user_registration_path 

/app/views/tools/search.html.haml

- @tools.each do |tool| 
    %h2= link_to tool.title, tool 
    %p= tool.subtitle 
    %p= link_to tool.user.try(:username), '/users/'+tool.user_id.to_s 
    %p= link_to "Edit", edit_path 
    %p= time_ago_in_words(tool.created_at) 

Я надеюсь, что предоставленные данные достаточно, если нет, пожалуйста, сообщите мне. Я благодарен за все ваши ответы.

ответ

0

Поскольку вы перебираете @tools с использованием переменной tool, вы можете сделать что-то вроде этого.

= link_to 'Edit', edit_tool_path(tool) 

Это аналогично тому, как вы связала tool «s title к show действия с точки зрения индекса, используя

= link_to tool.title, tool

Ваше мнение индекс должен выглядеть как

- @tools.each do |tool| 
    %h2= link_to tool.title, tool 
    %p= tool.subtitle 
    %p= link_to "Edit", edit_tool_path(tool) 
    %p= time_ago_in_words(tool.created_at) 

Сделайте то же самое для вида search.

Надеюсь, это поможет!

+0

Большое спасибо! Отмечено как правильный ответ. – Gugubaight

+0

@ J.Hübotter Рад, что это помогло! –