2014-07-16 4 views
0

У меня есть две модели: Posts и Teams, когда пользователь создает сообщение, я хочу, чтобы пользователь выбирал, какой команде он должен принадлежать. И я хочу сделать это, используя select_tag. То, что я в настоящее время имею (я использую HAML):Rails 4 - select_tag передать параметр контроллеру

= f.label :team_id, "Select team" 
= select_tag :team_id, options_from_collection_for_select(current_user.teams, :id, :name) 

В мой контроллер:

def create 

    # I want to pass :team_id here, but I'n not sure how... 
    @team = current_user.teams.find post_params[:team_id] 
    @post = @team.posts.build post_params 
    @post.user = current_user 

Это дает мне следующую ошибку:

Couldn't find Team without an ID 

Примечание

я ранее использовал радио кнопки для достижения этой цели, это выглядело так (и работал):

- current_user.teams.each do |team| 
    = f.radio_button 'team_id', team.id 
    = team.name 

Итак, как я могу достичь того же с помощью select_tag?

+0

Вы можете показать нам свой метод 'post_params'? – JTG

ответ

1

Я предполагаю, что team_id является атрибутом post, поэтому при создании записи сообщения вы все почтовые PARAMS обернутый в пост хэша, что-то вроде :post => {:title => 'Some title', :team_id => 1} и т.д .. так team_id внутри post:

@team = current_user.teams.find(params[:post][:team_id]) 
+0

Почти правильно, но но я в правильном направлении. ': team_id' не был хэш-сообщения. Вместо этого он работал: '@team = current_user.teams.find (params [: team_id])' – Anders

+0

Хорошо, хорошо, что это сработало, я мог бы дать вам лучший ответ, если бы у меня был доступ к журналам запросов. Приветствия;) – rmagnum2002

Смежные вопросы