
Tony
31.03.2017
09:06:09
Т/е нельзя напрямую изменить foreign_key. Это я пониманимаю. Не знаю как реализовать по другому.

Nikita
31.03.2017
09:06:11
а, ну так у тебя нет level с id 1
ну судя по ошибке
или есть? проверь

Google

Nikita
31.03.2017
09:07:25
Level.all

Tony
31.03.2017
09:08:18
Точно. Спасибо всем!
Невнимательность мать ее...

Nikita
31.03.2017
09:08:40
да не за что

Александр
31.03.2017
09:56:21
а как в нестед атрибутес вложить значения? есть форма с fields for, в парамс приходит [:branch_attributes]["0"][:boilers_attributes][:fuel_consumption] и тут есть значение [:fuel] я хочу на этом же уровне добавить [:date], пока времннно решил через жс :), вставляю hidden field с датой и меняю жсом. вместо ["0"] там их очень много, в зависимости от бранча.

ojab
31.03.2017
09:58:38
Лучше кинуть вьюху в gist и рассказать что в params хочешь получить, вестимо.

Александр
31.03.2017
10:05:55
https://gist.github.com/savvinovan/f40df84457a5f77f8edf8d9f4b0321c7

ojab
31.03.2017
10:09:40
boilers.fields_for 'fuel_consumptions[]'?
оу, fields_for 'boilers[]' на самом деле

Александр
31.03.2017
10:12:14
надо fields_for boilers[] написать?

ojab
31.03.2017
10:12:53
да, вместо fields_for :boilers (если я правильно понимаю чего ты хочешь)

Александр
31.03.2017
10:13:19
я хочу значение даты поменять
из контроллера
после сабмита формы

Google

ojab
31.03.2017
10:14:44
…и в чём проблема?

Александр
31.03.2017
10:15:55
не знаю как сделать merge :)

ojab
31.03.2017
10:17:13
merge чего?

Александр
31.03.2017
10:17:29
в парамс
перед апдейтом
сейчас покажу парамс
он выглядит как params['branch_attributes']['0']['boilers_attributes]['fuel_consmuption_attriubtes] мне надо сюда добавить params['branch_attributes']['0']['boilers_attributes]['fuel_consmuption_attriubtes]['date']
мне надо как то перебрать чтоли этот хеш, там есть какое подобие массива ['0' => ['boiler_attributes'], '1' => ['boiler_attributes'] и т.д.]

ojab
31.03.2017
10:26:10
…и ты до сих пор не показал, как выглядит params (hint: это хеш вида https://gist.github.com/ojab/4268267c8fc5abdb45ac20f42e7df0b4)
hint2: тебе не нужно ничего мержить, тебе нужно передавать правильные params из формы (с хешем вида { fuel: val1, date: val2 })

Александр
31.03.2017
10:36:36
https://gist.github.com/savvinovan/677e41fdc4fb9c183fe9f1c9ab7c352b
наконец то запустил :)
я хочу рядом с fuel дату добавить

Vasiliy
31.03.2017
11:01:38
а никто не работал с сериалайзерами для полиморфных связей?

ojab
31.03.2017
11:34:53

Александр
31.03.2017
11:35:25
да

ojab
31.03.2017
11:47:00
да
тогда тебе нужно в [:boiler_attributes][:id] положить массив (потому что Boiler.has_many :fuel_consumptions хешей с аттрибутами создаваемых FuelConsumption. Массив action_view создаёт если первый параметр у fields_for заканчивается на [].
В нашем случае это будет fields_for 'fuel_consumption[]'.
ну и вместо do |boilers| можно вписать do |ff| и заменить boilers.object.fuel_consumptions.build на FuelConsumption.new

Александр
31.03.2017
11:52:11
тогда вместо {"0"=>{"fuel"=>"123"}} будет просто {"fuel"=>"123"} ?

ojab
31.03.2017
11:54:52
будет [{"fuel"=>"123"}]

Google

ojab
31.03.2017
11:54:58
ибо has_many
(ну и писал я это всё не проверяя, но общий смысл понятен, надеюсь. Так что лучше попробовать и посмотреть что получится)
хотя прозреваю что придётся boilers.object.fuel_consumptions.build всё-таки оставить чтобы nested attributes подхватились
(но лучше проверить, ага)

Александр
31.03.2017
12:26:22
ок, спасибо

Смерть
31.03.2017
13:55:34
Подскажите. Есть такое.
namespace :foo do
get 'bar', action: 'info', as: :buzz
end
Хочу именованый хэлпен не foo_buzz_url, а просто buzz_url. Возможно сделать так?

ojab
31.03.2017
14:03:24
http://guides.rubyonrails.org/routing.html#overriding-the-named-helpers

Смерть
31.03.2017
14:13:33

Airat
31.03.2017
14:14:11
shallow: true не будет работать?

ojab
31.03.2017
14:20:15

Смерть
31.03.2017
14:26:36
Блин, хэлпер стал правильный, но адрес теперь не правильный

ojab
31.03.2017
14:33:52
это тоже аргументом к scope фиксится

Смерть
31.03.2017
14:39:07
Да, огонь, спасибо
А можете проконсультировать по ActiveModelSerializer? Я хочу для некоторых моделей выводить в json сразу же их релейшны. Т.е. делать нестед сущности. Сейчас единственный приемлимый для меня способ получился вот так.
Я никак не могу нагуглить, могу ли я делать вложеные сущности как-то проще, не описывая метод, в котором создаю нужный сериалайзер? Мне нужно будет в некоторых местах выводить кастомный сериалайзер, а не обычный, как в этом примере

Антон
31.03.2017
14:55:56
так в том месте где респондер можно выбрать любой серилайзер

Vasiliy
31.03.2017
14:56:56
в сериалайзере есть же has_many и т.д
has_one(или belongs_to) :lang
has_one(или belongs_to) :user_profile

Смерть
31.03.2017
14:58:25

Google

Vasiliy
31.03.2017
14:58:46
json_api у тебя формат?
я вот ща тоже ебусь прям вот с этим гавном

Смерть
31.03.2017
14:59:13
Да
Я пока только такой выход нашел
Но я запарюст писать кучу таких вьюх

Vasiliy
31.03.2017
14:59:40
там кароч надо делать там где выводишь include: [:user_profile, :lang]
это ваще оказывается фишка json_api, ты типа юзеру клиенту даёшь юзать релейшены в глубь

Смерть
31.03.2017
15:00:49
Блин, тогда хрень какая-то, запарюсь dry'ить это

Admin
ERROR: S client not available

Vasiliy
31.03.2017
15:01:14
и если дашь возможность в контроллере своём тип такого сделать respond_with current_resource.cards, include: params[:included]

Mikhail
31.03.2017
15:01:21
для апишки юзаю https://github.com/trailblazer/representable или AMS
но у блейзеров поприятнее

Смерть
31.03.2017
15:01:44
И я наоборот хочу разгрузить клиента, чтобы меньше запросов было

Vasiliy
31.03.2017
15:02:06
ну именно

Смерть
31.03.2017
15:02:07
И часть данных эмбедить сразу же, потому что они будут нужны сразу же в 90% случаев

Vasiliy
31.03.2017
15:02:44
делаешь render json: @user, include: '**'
или там render json: @user, include: '**.**'
https://github.com/rails-api/active_model_serializers/blob/master/docs/general/adapters.md#include-option

Смерть
31.03.2017
15:04:19
Хм, спасибо
похоже на то, что нужно

Google

Vasiliy
31.03.2017
15:04:50
весь день сегодня вхуярил на это

ojab
31.03.2017
15:05:37
as a side note, render json выдаст неправильный Content-Type, так что стандарту json-api ответ не будет соответстовать

Vasiliy
31.03.2017
15:06:00
самое интересное что если делать через тупой .as_json(include: {user: include: {}}) всё проще чем через АМС

ojab
31.03.2017
15:06:07
так что лучше юзать render jsonapi

Vasiliy
31.03.2017
15:06:21
да) там надо application/vnd.api+json
ни у кого нет пример белого списка?

Смерть
31.03.2017
15:25:24
Короче у меня пока столько вопросов и неочевиностей к rails-api, что не могу понять, нравится он мне или нет
Клепать все в jbuilder было проще

Vasiliy
31.03.2017
15:29:35
++++ 100 милионов
в принципе я с этими инклюдами разобрался, доку покурил по амс и вроде как уже нравится, достаточно гибко там всё
но вот на другом проекте у нас as_json везде где только можно и это какой-то пиздец

s
31.03.2017
15:36:45
кстати, раз про jsonapi вспомнили
а кто-нибудь пользовался json hyperschema для документирования api?
заиспользовали на новом проекте
и общее впечатление такое что
nooooo
но может я что-то не понимаю
и разрозненная непойми как написаная документация с примитивными примерами – это все не правда и я плохо искал
невозможность указать статус код ответа – см. выше или может оно вообще не нужно
костылили при описании ендпойнта для ресурса, который имеет разные представления – см. выше :)