Передача значения почтового идентификатора в скрытом поле - PullRequest
3 голосов
/ 17 декабря 2011

Это соответствует моему другому вопросу;пытаюсь получить правильный post_id, чтобы согласиться, когда я отправляю новый комментарий, относящийся к конкретному сообщению.

_form.html.erb

<%= f.hidden_field :project_id, :value => params[:id] %>
<%= f.hidden_field :post_id, :value => params[:id].post_id %>
<%= f.hidden_field :user_id, :value => current_user.id %>

Ответы [ 2 ]

5 голосов
/ 17 декабря 2011

довольно сложно точно знать, что вы делаете, не видя больше кода, но я предполагаю, что переменная экземпляра @post была установлена ​​с использованием @post = Post.find(params[:id]) в контроллере

# this is not needed, on the create, get it from the post?
<%= f.hidden_field :project_id, :value => params[:id] %>
# if you do want to pass it, guessing something like this
<%= f.hidden_field :project_id, :value => @post.project_id %>

# pass the post id to the create action
<%= f.hidden_field :post_id, :value => @post.id %>
# if the comment has a project_id
# @comment.project = @post.project ?

# do not send this in hidden field, get the value in your controller
# otherwise the user can change this value to another user when submitting the form
<%= f.hidden_field :user_id, :value => current_user.id %>

Вы также можете рассмотреть возможность использования вложенных маршрутов в случае комментариев?

Рекомендую прочитать о помощниках вида из направляющих рельсов: http://guides.rubyonrails.org/index.html

страница http://guides.rubyonrails.org/getting_started.html на самом деле содержит примеры кода для поста с комментариями

0 голосов
/ 18 декабря 2011

Решение проблемы состояло в том, чтобы просто поместить from из частичного обратно в фактический файл представления и использовать

<%= f.hidden_field :post_id, :value => params[:id].post_id %>

Однако, как указал house9;это огромный недостаток безопасности при использовании скрытых полей для передачи значений в форме.Так что меняя его вокруг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...