Guest User

Untitled

a guest
Jul 17th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.53 KB | None | 0 0
  1. ##Controller code
  2.  
  3. def new
  4. @project = Project.new
  5. 1.upto(1) { @project.photos.build }
  6. @project_category = ProjectCategory.all
  7. end
  8.  
  9. def create
  10. @project_category = ProjectCategory.all
  11. @project = Project.new(params[:project])
  12. if @project.save
  13. flash[:notice] = "Successfully created project."
  14. redirect_to @project
  15. else
  16. render :action => 'new'
  17. end
  18. end
  19.  
  20. def edit
  21. @project = Project.find(params[:id])
  22. @project_category = ProjectCategory.all
  23. if @project.photos.first.nil?
  24. 1.upto(1) { @project.photos.build }
  25. end
  26.  
  27. end
  28.  
  29. def update
  30. params[:photo_ids] ||= []
  31. @project = Project.find(params[:id])
  32.  
  33. unless params[:photo_ids].empty?
  34. params[:photo_ids].each do |ph|
  35. FileUtils.rm_rf("#{RAILS_ROOT}/public/datas/#{ph}")
  36. Photo.find(ph).destroy
  37. end
  38. end
  39. if @project.update_attributes(params[:project])
  40. flash[:notice] = "Successfully updated project."
  41. redirect_to @project
  42. else
  43. render :action => 'edit'
  44. end
  45. end
  46.  
  47.  
  48. ##form partial
  49.  
  50. <% form_for @project, :html => {:multipart => true} do |f| %>
  51. <%= f.error_messages %>
  52. <p>
  53. <%= f.label :projectName %><br />
  54. <%= f.text_field :projectName %>
  55. </p>
  56. <p>
  57. <%= f.label :description %><br />
  58. <%= f.text_area :description, :rows => 2 %>
  59. </p>
  60.  
  61. <%= f.label :category_id, "Type"%><br />
  62. <% @project_category.each do |cat|%>
  63. <%= f.radio_button :project_category_id, cat.id %>
  64. <%= cat.id%>
  65. <%= cat.title %>
  66. <% end %>
  67. <div class="album_photos">
  68. <%= render :partial => 'project_photo', :collection => @project.photos %>
  69. </div>
  70.  
  71. <div id="photos">
  72. <%= render :partial => 'photo', :collection => @project.photos %>
  73. </div>
  74. <%= link_to_function "Add Photo" do |page|
  75. page.insert_html :bottom, :photos, :partial => 'photo', :object => Photo.new
  76. end %>
  77. <p><%= f.submit "Submit" %></p>
  78. <% end %>
  79.  
  80.  
  81. ##project_photo
  82. <% unless project_photo.new_record? %>
  83. <%= image_tag(project_photo.data.url(:thumb), :alt => project_photo.description) %>
  84. <%= check_box_tag "photo_ids[]", project_photo.id %>
  85. <% end rescue nil %>
  86.  
  87. ##photo partial
  88. <div class="photo">
  89. <fieldset>
  90. <% fields_for "project[photo_attributes][]", photo do |p| %>
  91. <p>
  92. <%= p.label :Photo %><br />
  93. <%= p.file_field :data, :index => nil %>
  94. <%= link_to_function "delete", "remove_field($(this), ('.photo'))" %>
  95. </p>
  96. <p>
  97. <%= p.text_field :description
  98. </p>
  99.  
  100. <% end %>
  101. </fieldset>
  102. </div>
  103.  
  104. ## project model
  105. class Project < ActiveRecord::Base
  106. has_many :photos
  107. has_one :project_category
  108.  
  109. def photo_attributes=(photo_attributes)
  110. photo_attributes.each do |attributes|
  111. photos.build(attributes)
  112. end
  113. end
  114. end
  115.  
  116. ##photo model
  117.  
  118. class Photo < ActiveRecord::Base
  119. attr_accessible :id, :description, :photo
  120. belongs_to :project
  121.  
  122. has_attached_file :data,
  123. :styles => {
  124. :thumb => "150x150#",
  125. :large => "640x480#",
  126. :fullsize => "800x600#"
  127. }
  128.  
  129. validates_attachment_size :data, :less_than => 2.megabytes
  130.  
  131. #validates_attachment_presence :data
  132. validates_attachment_content_type :data, :content_type => ['image/jpeg','image/jpg', 'image/png']
  133.  
  134. end
  135.  
  136.  
  137. ## the photo migration file
  138.  
  139. class CreatePhotos < ActiveRecord::Migration
  140. def self.up
  141. create_table :photos do |t|
  142. t.references :project
  143. t.string :description
  144. t.timestamps
  145. end
  146. add_index :photos, :project_id
  147. end
  148.  
  149. def self.down
  150. drop_table :photos
  151. end
  152. end
Add Comment
Please, Sign In to add comment