我在我的應用程序中設置了一個多態關聯。圖片屬於記分板模型和用戶模型,如圖所示。每個記分牌和用戶都有一張照片。我也有嵌套的路線,圖片資源嵌套在用戶和記分牌資源中。多態和has_one關聯
routes文件的用戶:
resources :users do
resources :picture
end
resources :account_activations, only: [:edit]
resources :password_resets, only: [:new, :create, :edit, :update]
resources :conversations, only: [:index, :show, :destroy] do
member do
post :reply
post :restore
post :mark_as_read
end
collection do
delete :empty_trash
end
end
路由文件記分牌:
resources :scoreboards do
member do
put :favourite
get :deleteteams
get :deleteschedules
end
resources :invitations, only: [:new, :create]
resources :comments
resources :teams, only: [:edit, :create, :destroy, :update]
resources :schedules
resources :picture
end
我已經建立了畫面控制器。代碼如下。
<div id= "uploadphoto">
<%= form_for([@pictureable, @picture], url: scoreboard_picture_path, html: {multipart: true}) do |f| %>
<%= f.file_field :picture, accept: 'image/jpeg,image/gif,image/png', id: "files", class: "hidden" %>
<label for="files" id="picture"><h4 id="picturetext">Click Here to Upload Picture</h4></label>
<div class="modal" id="modal-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">Position and Crop your Image</div>
<div class="modal-body">
<div class="upload-preview">
<img id="image" /></img>
</div>
<%= f.submit "upload photo" %>
</div>
<div class="modal-footer"> Click Anywhere Outside the box to Cancel</div>
</div>
</div>
</div>
<% end %>
</div>
我遇到的問題是與URL:下面
class PictureController < ApplicationController
before_filter :load_pictureable
def new
@picture = @pictureable.build_picture
end
def create
end
def destroy
end
private
def picture_params
params.require(:picture).permit(:picture)
end
def load_pictureable
klass = [User, Scoreboard].detect { |c| params["#{c.name.underscore}_id"] }
@pictureable = klass.find(params["#{klass.name.underscore}_id"])
end
end
我的新的形式給出。這給了我以下錯誤。
No route matches {:action=>"show", :controller=>"picture", :scoreboard_id=>"13"} missing required keys: [:id]
我不知道爲什麼它重定向我的表演動作,我認爲它可能是嵌套routes.I不知道是什麼問題。我以爲我通過傳遞以下網址new_scoreboard_picture_path
來解決它。但是,當我按上傳照片時,它會讓我回到相同的URL。這是有道理的,因爲我明確指出了新形式的URL。但是,這是不正確的。如果有人能幫我弄清楚問題是什麼,這將是一個很大的幫助。我只包括相關的代碼。但是,如果我缺少任何東西,請讓我知道。任何解釋爲什麼我得到這個錯誤也會澄清我的過程。這是第一次使用多態關聯。任何形式的幫助將是偉大的!
請遵循軌控制器從[這裏]命名約定(http://guides.rubyonrails.org/action_controller_overview.html#controller-naming-convention)。你能否從瀏覽器粘貼呈現的HTML代碼? –
如果您還可以顯示'routes.rb'代碼 –
@ Jay-ArPolidario,我將編輯我的原始問題幷包含記分牌和用戶的所有相關路線文件。 – kpaul