2015-05-26 4 views
0

Я пытаюсь реализовать datagrid gem в Rails 4, но не уверен, как включить ссылку в класс Grid.Как включить изображение в качестве ссылки для драгоценного камня datagrid?

я в настоящее время для класса UsersGrid:

class UsersGrid 
    include Datagrid 

    scope do 
    User.order("users.created_at desc") 
    end 

    column(:avatar) do |user| 
    if user.avatar? 
     link_to ActionController::Base.helpers.image_tag(user.avatar.url, alt: "Profile"), user_path(user) 
    else 
     link_to ActionController::Base.helpers.image_tag("profile.gif", alt: "Profile"), user_path(user) 
    end 
    end 
end 

Это генерирует сообщение об ошибке следующего со ссылкой на link_to линии:

undefined method 'user_path' for #<ActionView::Base:0x007f821d3115b8> 

Как я должен настроить код, чтобы сделать ссылку Работа?


Дополнительная информация:

Просмотр страницы:

<%= datagrid_form_for @grid, :method => :get, :url => users_path %> 
<%= will_paginate(@grid.assets) %> 
<%= datagrid_table(@grid) %> 
<%= will_paginate(@grid.assets) %> 

Контроллер метод:

def index 
    @grid = UsersGrid.new(params[:users_grid]) do |scope| 
    scope.where(admin: false).page(params[:page]).per_page(30) 
    end 
    @grid.assets 
end 

ответ

3

Я нашел решение: мне пришлось добавить :html => true в column(:avatar, :html => true). Таким образом, html-код, такой как link_to, работает, и я также больше не нужен ActionController::Base.helpers, чтобы получить доступ к методу image_tage.

+0

: html => требуется истинная переменная, так что загружаются помощники вида, иначе они не будут. Вы должны отметить свой собственный комментарий как ответ :) – radalin

0

Похоже, вам не маршрут сконфигурировано для пользователя ресурс в routes.rb.

Чтобы проверить и узнать, какие помощники путей доступны, перейдите в командную строку, перейдите в каталог проекта и введите rake routes. Если правильно настроен, вы должны увидеть что-то вроде:

user GET /users/:id/(.:format) users#show 

На крайнем левом приведенном выше примере это «имя», которое используется для генерации помощника пути. Таким образом, в приведенном выше примере имя «пользователь», а Rails автоматически генерирует помощник user_path, который принимает аргумент, являющийся идентификатором пользователя. Таким образом, user_path(1) является помощником для /users/1. Если вы передадите объект User (например, вы были в своем примере), он просто получит идентификатор от пользователя в фоновом режиме, например.) user_path(current_user) найдет идентификатор current_user и вернет /users/1.

Подробнее о рейк-маршрутах here.

В любом случае, если user отсутствует из файла routes.rb вы могли бы добавить что-то вроде этого, чтобы routes.rb:

get '/users/:id', :to => 'users#show', :as => :user 

Имейте в виду, вы, вероятно, уже есть что-то для ресурса пользователей, так что вы можете быть в состоянии сделать более легкое/чистое изменение в зависимости от того, как вы настроили файл.

+0

Спасибо Скотту, но маршрут есть. Все работало, когда я использовал обычные таблицы. Только сейчас я заменяю эти таблицы на datagrids, что эта проблема возникает. Поэтому он должен быть связан с 'datagrid gem'. Кроме того, в представлениях, где у меня также есть эти пути, пути работают, это только этот класс сетки, где они не работают. – Nick

Смежные вопросы