2016-08-29 1 views
0

Мне нужна ваша помощь. Мне нужно получить current_user.id (я использую драгоценный камень Девиза) до articles#create. Я хочу передать его с помощью средств form_for и hidden field. Я написал:Как я могу использовать form_for, чтобы получить значение hidden_field с помощью параметров в контроллере # create

<%= form_for :article, url: articles_path do |f| %> 
    <p> 
    <%= f.label :title %><br/> 
    <%= f.text_field :title %> 
    </p> 

    <p> 
    <%= f.label :text %><br/> 
    <%= f.text_area :text %> 
    </p> 

    <p> 
# It's here 
<%= f.hidden_field :user_id %> 

У меня есть:

<input type="hidden" name="article[user_id]" id="article_user_id"/> 

, но мне нужно:

<input type="hidden" name="article[user_id]" id="article_user_id" value="2"/> 

Я написал этот HTML код в new.html.erb

<input type="hidden" name="article[user_id]" id="article_user_id" value="<%= current_user.id%>"/> 

и активная запись сохраненного объекта в базу данных. Я проверяю params, и я не вижу своего скрытого значения. Я хочу задать вам два вопроса: 1. Как я могу написать hidden_field в form_for? 2. Как я могу получить статьи # создать это скрытое значение средствами params?

+0

попробовать это, <% = f.hidden_field: user_id, current_user.id%> ИЛИ <% = hidden_field_tag: user_id, current_user.id%> – Navin

+0

Спасибо, вторая версия - работа – Vladimir

ответ

1

Я думаю, что вы хотите:

<%= f.hidden_field :user_id, value: current_user.id %> 

А затем в контроллере (как правило, в article_params), убедитесь, что вы позволяете параметр user_id.

def article_params 
    params.require(:article).permit(:user_id, :title, ...) 
end 

Лучший способ сделать это будет установка его на стороне сервера, так как скрытое поле можно манипулировать .. как пример:

def create 
    @article = current_user.articles.new(article_params) 
    if @article.save 
    # ... 
    else 
    # ... 
    end 
end 
+0

Благодарим вас за более полный ответ. Это работает. – Vladimir

+0

Вы можете нажать на мой ответ, чтобы сказать, что это был ответ и так близко к этому вопросу. – siegy22

+0

Где я могу щелкнуть? – Vladimir

0

С помощью устройства для текущего пользователя, входящего в систему, доступен current_. Предполагая, что ваша пользовательская модель является «пользователем». Постарайся

<%= hidden_field_tag 'user_id', current_user.user_id %> 
Смежные вопросы