フォームフィールドは、それが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')
}
});
コントローラーの解決策は、タイトルが空であるかどうかに関係なく、「de」を「lang」に入れているようです。 – user3735111
行を次のように変更して修正しました。 '@article.lang = @ article.title.blank? ? 'rus': 'eng'' – user3735111
railsヘルパーメソッドでフォームを作成した場合、すべてのフォーム値はグループ化されます(おそらくモデル/オブジェクト名の下にグループ化される)ので、 'params [:title] .blank?' 'params [:article] [:title] .blank? 'のようなものを使うことができます。しかし、私はparamsを呼び出すよりもあなたの修正を好きです。 – Gerry