我只是对简单的形式和嵌套感到好奇。香港专业教育学院阅读过文件,但仍然不太明白。
我使用设备创建了一个网站,用户可以在其中发布推文,也可以编辑推文。 我的印象是,[@ user,@tweet]在新表单和编辑表单上都必须出现在simple_form_for中。但是我发现[@user,@tweet]需要在新表单上,只有[@tweet]需要在编辑表单上。它是否正确? 我还不清楚这是如何工作的。是否因为需要将新的tweet分配给用户,因此使用@user和@tweet来编辑tweet,所以不需要@user是因为不需要它吗? 道歉,如果这没有道理。
答案 0 :(得分:1)
我不清楚它是如何工作的。是因为需要将新的tweet分配给用户,所以使用@user和@tweet,并且要编辑tweet,不需要@user是因为不需要它吗?
简短的回答是“是”。更长的答案是...
我不知道,但我猜测路线看起来像:
resources :user do
resources :tweets, shallow: true
end
哪个会给你类似的东西:
user_tweets GET /users/:user_id/tweets(.:format) tweets#index
POST /users/:user_id/tweets(.:format) tweets#create
new_user_tweet GET /users/:user_id/tweets/new(.:format) tweets#new
edit_tweet GET /tweets/:id/edit(.:format) tweets#edit
tweet GET /tweets/:id(.:format) tweets#show
PATCH /tweets/:id(.:format) tweets#update
PUT /tweets/:id(.:format) tweets#update
DELETE /tweets/:id(.:format) tweets#destroy
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
因此,您可以看到对于tweets#edit
,tweets#show
,tweets#update
和tweets#destroy
,不需要:user_id
。这是由于shallow: true
您可以在guide中了解有关浅层嵌套的更多信息。