Ruby on Rails:通过表单提交传递条件隐藏值



简而言之:我的表单有 2 个文本字段,分别表示值 :title 和 :title_de。我需要在提交时自动将值 :lang 作为"eng"或"de"传递,具体取决于 :title 的字段是否留空。怎么办?

编辑:用于创建的控制器代码:

def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end

更新

在控制器中分配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());
});
<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>

当表单字段留空时,它将返回 nil。您可以检查 nil 并在控制器中设置语言:

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

您也可以使用javascript在视图中执行此操作,但是如果用户禁用了javascript,则会遇到问题。

使用 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')
}
});

最新更新