Краткий ответ:
Answer.create(params[:answer].merge(:question_id => @question.id, :user_id => @user.id)
или
@question.asnwers.create(params[:answer].merge(:user_id => @user.id)
или
@user.answers.create(params[:answer].merge(:question_id => @question.id)
Длинный ответ, я предполагаю, что вы можете получить зарегистрированного пользователя,и у вас есть маршрут, определенный как:
map.resources :questions, :has_many => [:answers]
Итак, ваши маршруты такие: example.com/questions/:question_id/answers.И тогда вы делаете в контроллере @question = Question.find(params[:question_id])
Я не понимаю, что вы подразумеваете под структурой ссылки для публикации нового ответа.Сначала вам нужна ссылка на новое, что-то вроде link_to («Новый ответ», new_question_answer_path (@question)).
Затем в контроллере:
def new
@question = Question.find(params[:question_id])
@answer = Answer.new
end
В представлении для нового:
<% form_for :answer, [@question, @answer] do |f| %>
Your form stuff
<% end %>
И тогда у вас будет действие создания ... У меня нетЯ не пробовал этот код, но вы поняли, верно?