Используйте именованные маршруты url_helper в ячейках 4 (Rails 4.2)
Я просто обновляю свой гем с 3.x до 4.1.7. Мой Gemfile выглядит следующим образом:
gem "cells-rails", "~> 0.0.8"
gem "cells-erb", "~> 0.1.0"
Но я столкнулся с проблемой, что я не могу использовать url_helper как post_path(@post) в моем представлении ячеек. Ситуация выглядит следующим образом:
клеток /posts_cell.rb
class PostCell < Cell::ViewModel
include ActionController::UrlFor
include ActionView::Helpers::UrlHelper
def show(post)
@post = post
render
end
end
клеток / запись /show.erb
<article>
<%= link_to post_path(@post) do %>
<%= @post.title %>
<% end %>
<%= @post.content %>
....
</article>
Сообщения об ошибках
undefined method `[]' for nil:NilClass
Покопавшись глубже, я нашел обходной путь, как показано ниже:
клеток /posts_cell.rb
class PostCell < Cell::ViewModel
include ActionController::UrlFor
include ActionView::Helpers::UrlHelper
delegate :url_helpers, to: "Rails.application.routes"
def show(post)
@post = post
render
end
end
И тогда вы можете использовать url_helpers, как показано ниже:
клеток / запись /show.erb
<article>
<%= link_to url_helpers.post_path(@post) do %>
<%= @post.title %>
<% end %>
<%= @post.content %>
....
</article>
Это решение сработало, но оно немного неловко. Есть ли другое более прямолинейное решение?
Обновить
Я создаю PostCell в консоли rails. После поиска всех методов, которые есть у PostCell, я обнаружил, что post_path - один из них. Но все равно получаю ту же ошибку.