2016-08-29 9 views
0

私はあなたの助けが必要です。current_user.id(Devise gemを使用)をarticles#createにする必要があります。私はそれをform_forhidden fieldという意味で渡したいと思います。私が書いた:コントローラでparamsを使用してhidden_​​field値を取得するにはどうすればform_forを使用できますか?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"/> 

が、私は必要があります:私はnew.html.erbをこのhtmlコードを書いた

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

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

とActive Recordでオブジェクトをデータベースに保存しました。paramsを調べて、私の隠れた値は表示されません。 私はあなたに2つの質問をしたいと思います: form_forhidden_fieldを書き込むにはどうしたらいいですか? 2.アーティクルにアクセスするにはどうすればこの隠し値をparamsで作成できますか?

+0

は、%= f.hidden_​​field <、これを試してみてください。 user_id、current_user.id%> OR <%= hidden_​​field_tag:user_id、current_user.id%> – Navin

+0

ありがとう、第2版は仕事です – Vladimir

答えて

1

を試してみてください。

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_ヘルパーが利用可能です。あなたのユーザモデルが「ユーザ」であると仮定します。あなたはuser_idのパラメータを許可していることを確認してください

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

そして、あなたのコントローラ内(通常はarticle_paramsで):私は何をしたいことはあると思い

<%= hidden_field_tag 'user_id', current_user.user_id %> 
関連する問題