Ruby 및 Rails 배우기. 내가 호출 할 경우 시작 설명서를 다음에서Ruby 관점에서 edit_post_path 란 무엇입니까
는 index.html.erb에 다음과 같은 다른 것들 코드 중 생성rails generate scaffold Post name:string title:string content:text
:
<% @posts.each do |post| %>
<tr>
<td><%= post.name %></td>
<td><%= post.title %></td>
<td><%= post.content %></td>
<td><%= link_to 'Show', post %></td>
<td><%= link_to 'Edit', edit_post_path(post) %></td>
<td><%= link_to 'Destroy', post, confirm: 'Are you sure?', method: :delete %></td>
</tr>
<% end %>
</table>
위의 나의 유일한 관심사는 edit_post_path
, 그리고 내 질문은 무엇입니까? - 구체적으로 루비 관점에서. 확실히 루비 메서드가되는 모든 모습을 가지고 있으며, 가장 명확하게 루비 인 다른 코드에 포함되어 있습니다. posts.each do |post|...end
루비
그러나 edit_post_path가 루비 메서드 인 경우에는 코드가 어디 있습니까? 'post'는 레일스에 제공 한 레이블입니다. 아마도이 Ruby 메서드는 "레일스가 비계를 생성 할 때"생성 된 다른 루비 코드와 함께 내 사이트 디렉토리의 어딘가에 있어야합니다 (즉, 레일즈 전용 디렉토리 예). 그러나 어디에도 정의 된 'edit_post_path'와 같은 메소드가 없습니다. 그래서 Ruby는 전혀 아예 없으며, 어떤 이유로 든 그렇게 보이도록 고안된 것입니다. 실제로 Rails에 독점적으로 적용되는 무언가에 의해 처리되는 텍스트 문자열입니다. 이것이 Rails에 대해 아주 멋진 것의 예입니까?
나를 이길, 좋은 대답. OP, 도우미 메소드가 어디에 있는지 알고 싶다면 (그리고 앱이 시작될 때 동적으로 정의 된 "곧은 루비 메소드"가 정의되어 있음)이 정의되어 있으면 https : // github를 살펴보십시오. com/rails/rails/blob/d761ec486416df673030417047671c1a190f5aba/actionpack/lib/action_dispatch/routing/route_set.rb # L143-204 –