2012-11-05 36 views
7

Tôi muốn hiển thị biểu mẫu "Chỉnh sửa" trong chế độ xem "Hiển thị" của đối tượng cha.Cách hiển thị biểu mẫu "Chỉnh sửa" một phần trong trang "Hiển thị" của mô hình khác trong Rails

Mô hình của tôi trông giống như sau: Chuyến đi có nhiều ngày có nhiều hoạt động. Chuyến đi chấp nhận thuộc tính lồng nhau cho Ngày. Ngày chấp nhận thuộc tính lồng nhau cho hoạt động.

Khi tôi ở chế độ xem "Hiển thị" cho Chuyến đi, làm cách nào để hiển thị biểu mẫu "Chỉnh sửa" một phần cho "Hoạt động"?

Tôi biết bằng cách nào đó tôi cần chỉ định phần Chỉnh sửa một phần mà ID hoạt động mà tôi muốn chỉnh sửa nhưng tôi không chắc chắn cách chuyển thông tin đó từ chế độ xem "Hiển thị" của "Chuyến đi".

<% @trip.days.each do |day| %> 
    <div id="daydiv_<%= day.id %>"> 
     <b><%= day.summary %></b> 
     <%= content_tag_for :ol, day do %> 
      <% day.activities.each do |activity| %> 
       <li id="activity_<%= activity.id %>"><%= link_to activity.address, edit_activity_path(activity) %></li> 
      <% end %> 
     <% end %> 
    </div> 
    <% end %> 

<div id="activity_form"> 
    <%= render :partial => "/activities/form", :activity => @activity %> 
</div> 

/hoạt động của tôi/form vẻ một phần như thế này:

<%= form_for(@activity) do |f| %> 
    <div class="field"> 
    <%= f.label :title %><br /> 
    <%= f.text_field :title %> 
    </div> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 
+0

Trên ghi chú không liên quan, hãy xem qua mặt tối .. có một cái nhìn mỏng manh: https://gist.github.com/4021515 –

Trả lời

5

Đây là những gì tôi đã kết thúc làm và nó hoạt động.

Trong show.html.erb của tôi cho "Chuyến đi" của tôi. .

show.html.erb

<div id="activity_form"> 
<h2>Activities</h2> 
</div> 

liên kết đến "Chỉnh sửa' một Hoạt động Chú ý: từ xa => đúng mà nói với bộ điều khiển Rails rằng đây sẽ là một yêu cầu AJAX như vậy để làm cho chỉnh sửa. js.erb

<%= link_to activity.location[0, 20], edit_day_activity_path(day, activity), :class=>"btn btn-info fixedwidthbtn", method: :get, :remote => true 

_form.html.erb hình thức này một phần là dưới sự hoạt động Xem thư mục (../views/activities/_form.html.erb)

. 210
<%= form_for([@day, @activity], :remote => true) do |f| %> 
<fieldset> 
    <%= f.label :title, "Activity" %> 
    <%= f.text_field :title, :rows => 1 %> 
</fieldset> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
</form> 
    <%= link_to 'Delete', [@day, @activity], method: :delete, data: { confirm: 'Are you sure?' } %> 
<% end %> 

edit.js.erb Đây là tệp trong thư mục Chế độ xem hoạt động (../views/activities/edit.js.erb). Nói để lấy các phần tử DOM với ID của "activity_form" và đưa ra những "hình thức" một phần

$("#activity_form").html("<%= escape_javascript(render(:partial => "form"))%>"); 

update.js.erb tôi bao gồm javascript này sau khi chạm cập nhật về hình thức Edit để làm cho một phần cập nhật của Danh sách hoạt động. Vì vậy, tôi không phải tải lại trang để xem bản cập nhật.

$("#activities_list").html("<%= escape_javascript(render(:partial => "/trips/activities")) %>"); 

routes.rb Đây là cách tôi tổ tuyến đường của tôi. Chỉ thực hiện 1 cấp theo các phương pháp hay nhất.

resources :trips do 
    resources :days 
end 

resources :days do 
    resources :activities 
end 
+0

Tôi xử lý rất nhiều với tiếng rít ajax. Câu trả lời của bạn giải quyết cho tôi 2 vấn đề. Hiển thị biểu mẫu với ajax và hiển thị biểu mẫu cho mô hình lồng nhau. Cảm ơn rất nhiều. – Dieglock

Các vấn đề liên quan