2017-03-28 13 views
0

要約:タイトルと:title_deという2つのテキストフィールドを持つフォームがあります。私は自動的に値を渡す必要があります:langは、タイトルが空のままかどうかに応じて、 "eng"または "de"のいずれかで提出します。どうやってするの?Ruby on Rails:フォーム提出で条件付きの隠し値を渡す

EDIT:作成するためのコントローラコード:

def create 
    @article = Article.new(article_params) 

    if @article.save 
    redirect_to @article 
    else 
    render 'new' 
    end 
end 

答えて

1

UPDATE

ソリューションのように行うことができますjavascriptを使用して

+0

コントローラーの解決策は、タイトルが空であるかどうかに関係なく、「de」を「lang」に入れているようです。 – user3735111

+0

行を次のように変更して修正しました。 '@article.lang = @ article.title.blank? ? 'rus': 'eng'' – user3735111

+0

railsヘルパーメソッドでフォームを作成した場合、すべてのフォーム値はグループ化されます(おそらくモデル/オブジェクト名の下にグループ化される)ので、 'params [:title] .blank?' 'params [:article] [:title] .blank? 'のようなものを使うことができます。しかし、私はparamsを呼び出すよりもあなたの修正を好きです。 – Gerry

0

フォームフィールドは、それがnilを返し、空のままです。あなたはゼロのためにチェックし、コントローラに言語を設定することができます

if params[:title] == "nil" 
# set the language 
else 
# title is not nil, do something else 
end 

JavaScriptを使用して、同様のビューでそれを行うことができますが、ユーザーがJavaScriptを無効にしている場合は、問題を抱えています。

def create 
    @article = Article.new(article_params) 

    @article.lang = params[:title].blank? ? "de" : "eng" 

    if @article.save 
    redirect_to @article 
    else 
    render 'new' 
    end 
end 

それとも、あなたが好むならば、あなたはジャバスクリプト/ jqueryのを使用することができます:あなたは、コントローラでlangを割り当てる

In your view add hidden_file_tag 
<%= hidden_filed_tag :langauge, id: "langauge" %> 

and in javascript 
$('#title').on("change",function(){ 
    if($(this).val() == ""){ 
    $("#langauge").val('eng') 
    }else{ 
    $("#langauge").val('de') 
    } 
}); 
+0

私のコントローラにこれを実装する方法がわかりません。メインポストを編集し、そこに使用しているものを追加しました。 – user3735111

0

:titleの値を取得し、正しい値をに割り当てますフォームを送信する前に。

スニペット:

$('#my-button').on('click', function() { 
 
    event.preventDefault(); 
 
    var title = $('#title').val(); 
 

 
    if(title == "") { 
 
    $('#lang').val("de"); 
 
    } else { 
 
    $('#lang').val("eng"); 
 
    } 
 
    
 
    // change to $('#my-form').submit(); 
 
    alert($('#lang').val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form id="my-form"> 
 
    title: <input type="text"name="title" id="title"/><br> 
 
    title_de: <input type="text" name="title_de" id="title_de"/><br> 
 
    <input type="hidden" id="lang" name="lang" /> 
 
    <input type="submit" id="my-button" /> 
 
</form>

関連する問題