inherited_resources
을 사용하는 comments_controller
이 있으며이 모델을 다루고 있습니다 : 및 Shop (belongs_to User)
. 레일 4.1.1 및 Inherited_resources v는 1.5.0입니다.루비 온 레일즈 상속 된 소스 다수 belongs_to
경로는 다음과 같습니다
resources :shop do
resources :comments, only: [:create, :destroy]
end
그러나, 아래의 코드가 작동하지 않습니다
class CommentsController < InheritedResources::Base
before_filter :authenticate_user!
nested_belongs_to :user, :shop
actions :create, :destroy
def create
@comment = build_resource
@comment.shop = Shop.find(params[:hotel_id])
@comment.user = current_user
create!
end
def destroy
@hotel = Shop.find(params[:hotel_id])
@comment = Comment.find(params[:id])
@comment.user = current_user
destroy!
end
private
def permitted_params
params.permit(:comment => [:content])
end
RSpec에 의견의 테스트 생성/삭제 나 Couldn't find User without an ID
을 말한다.
도움 주셔서 감사합니다. 실패한 테스트의
UPD 하나 : 당신이 Shop
에 속하는 Comments
처리 할 같은
let(:user) { FactoryGirl.create(:user) }
let(:shop) { FactoryGirl.create(:shop, user: user) }
describe "comment creation" do
before { visit shop_path(shop) }
describe "with invalid information" do
it "should not create a comment" do
expect { click_button "Post a comment" }.not_to change(Comment, :count)
end
end
당신이에있는 레일의 버전을 언급하는 것이 도움이 될 것입니다. 이 보석 [상속 된 자원] (https://github.com/josevalim/inherited_resources)은 꽤 오래되었고 저자는 Rails 3 이상에서는 사용하지 말 것을 권고합니다. – San
@San을 업데이트했습니다. Rails는 4.1.1 –