простая форма в рубине на рельсах - PullRequest
0 голосов
/ 28 ноября 2018

Мне просто интересно узнать о простой форме и вложенности.Я читал документы, но до сих пор не совсем понимаю.

Я создал сайт с помощью устройства, где пользователь может публиковать твиты, а также редактировать твиты.У меня сложилось впечатление, что [@user, @tweet] нужно будет присутствовать в simple_form_for как в новых, так и в редактируемых формах.Однако я обнаружил, что [@user, @tweet] должен быть в новой форме, и только [@tweet] должен быть в форме редактирования.это правильно?Мне немного непонятно, как это работает.Это потому, что пользователю нужно назначить новый твит, поэтому используются @user и @tweet, а для редактирования твита @user не нужен, потому что в этом нет необходимости?извинения, если это не имеет смысла.

1 Ответ

0 голосов
/ 28 ноября 2018

Мне немного непонятно, как это работает.Это потому, что пользователю нужно назначить новый твит, поэтому используются @user и @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

Подробнее о мелком раскладе вы можете прочитать в руководстве .

...