简而言之:我的表单包含2个值的文本字段:title和:title_de。我需要自动传递值:lang on submit为“eng”或“de”,具体取决于:title是否为空。怎么做?
编辑:用于创建的控制器代码:
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end
答案 0 :(得分:1)
<强>更新强>
在控制器中分配lang
的解决方案:
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
或者,如果您愿意,可以使用javascript / jquery获取:title
的值,然后在提交表单之前将正确的值分配给:lang
。
段:
$('#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());
});
&#13;
<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>
&#13;
答案 1 :(得分:0)
当表单字段留空时,它返回nil。您可以检查nil并在控制器中设置语言:
if params[:title] == "nil"
# set the language
else
# title is not nil, do something else
end
您也可以使用javascript在视图中执行此操作,但如果用户禁用了javascript,则表示您遇到了问题。
答案 2 :(得分:0)
使用javascript,你可以这样做
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')
}
});