Предисловие (потому что это мой первый пост на рельсах)
Я люблю рельсы, но в настоящее время это сводит меня с ума!
Я поиграл с рельсами 2.3 два года назад. Теперь я начал с рельсов 3.1. Все просто для удовольствия. Rails - лучший и самый профессиональный, которого я когда-либо видел в веб-разработке.
Но ... Так как одна строка кода обладает такой мощью, ее довольно сложно изучить !!!
Трудно получить магию рельсов: -)
Задача
У меня есть вложенные модели и маршруты. На одной странице есть много статей.
Я отображаю страницы / show.html.haml и на странице перечисляю все статьи. Каждая статья должна иметь нижнюю часть под надписями «new», «edit» и «destroy».
render @articles
Вот мои взгляды / статьи / _article.html.haml
%li.article_list{:id=>"a#{article.id}"}
.article
.article_head
%h2
=article.title:class => "icon"), '#'
.clear
.article_content
= raw parse_content(article.content)
-if admin?
#article_menu
%ul
%li= link_to icon_new + 'New...', new_page_article_path(@page)
%li=# link_to icon_edit + 'Edit', edit_page_article_path(WHAT SHALL BE IN HERE???)
%li= link_to icon_destroy + 'Destroy', [article.page, article], :confirm => "#{article.title}\n\nAre you sure?", :method => :delete
Моя проблема в этой строке
%li=# link_to icon_edit + 'Edit', edit_page_article_path(WHAT SHALL BE IN HERE???)
Я хочу отредактировать статью, но не понимаю, как это сделать! Я пробовал и гуглил часами!
В общем, я следовал этому хорошему руководству: http://guides.rubyonrails.org/getting_started.html#associating-models
Дополнительная информация
модель / article.rb
class Article < ActiveRecord::Base
attr_accessible :title, :content, :publish_at, :fan_only
belongs_to :page
validates :content, :presence => true
validates :page_id, :presence => true
default_scope :order => 'articles.created_at DESC'
end
Модели / page.rb
class Page < ActiveRecord::Base
attr_accessible :short_name, :title, :content, :fan_only
has_many :articles, :dependent => :destroy
end
routes.rb
resources :pages do
resources :articles
end
часть article_controller.rb
# GET /articles/1/edit
def edit
@page = Page.find(params[:page_id])
@article = @page.articles.find(params[:id])
end