说我有一个文章模型,并在文章“新”视图中,我有两个button,“发布”和“保存草案”。 我的问题是如何知道在控制器中单击哪个button。 我已经有了一个解决scheme,但是我认为必须有一个更好的方法。 我目前使用的观点是: <div class="actions"> <%= f.submit "Publish" %> <%= f.submit "Save Draft", :name => "commit" %> </div> 所以在控制器中,我可以使用params [:commit]string来处理这个动作。 def create @article = Article.new(params[:article]) if params[:commit] == "Publish" @article.status = 'publish' // detail omitted end @article.save end 但我认为使用视图相关的string是不好的。 你能告诉我另一种方法来完成这个吗? 更新 :由于这些button是在相同的forms,他们都去“创build”的行动,这对我来说是好的。 我想要的是在创build行为中处理这个问题,比如给文章模型一个“状态”栏,并保留“公开”或“草稿”。
我有一个数据模型在我的Rails项目有一个序列化字段: class Widget < ActiveRecord::Base serialize :options end 选项字段可以有可变的数据信息。 例如,以下是Fixtures文件中一条logging的选项字段: options: query_id: 2 axis_y: 'percent' axis_x: 'text' units: '%' css_class: 'occupancy' dom_hook: '#average-occupancy-by-day' table_scale: 1 我的问题是让用户在标准表单视图中编辑此信息的正确方法是什么? 如果你只是使用一个简单的文本区域字段的选项字段,你只会得到一个yaml转储表示,该数据将被发回作为一个string。 在Rails中编辑一个序列化的散列字段的最佳方式是什么?
我有一个名为书籍的资源。 它在我的路由文件中被正确地列为资源。 我有一个新的行动,给新的观点的标准: @book = Book.new 在模型上,有一些由存在validation的属性,所以如果保存操作失败,将会产生错误。 在我的控制器中: @book = Book.create … # some logic if @book.save redirect_to(@book) else render :new end 这是非常标准的; 以及使用render:new的原理是这样的,这个对象被传回到视图,错误可以被报告,重新填写表单等等。 这有效,除了每次我被发回到表单(通过渲染:新),我的错误显示,但我的url是INDEXurl,这是 /books 而不是 /books/new 我是从哪里开始的。 我看过其他几个关于这个问题的post,但没有答案。 至less,人们会认为它将着陆在/书/创build,我也有一个查看文件(在这种情况下相同的新)。 我可以做这个: # if the book isn't saved then flash[:error] = "Errors!" redirect_to new_book_path 但是,然后@book数据丢失,以及错误信息,这是forms和行动的整个点等。 为什么渲染:新登陆我在/书,我的索引行动,通常情况下,该URL调用INDEX方法,其中列出所有的书籍?
好的,我终于想出了如何通过Drupal中的form API添加(或编辑)表单控件。 但现在,我想添加文本到表单。 不是<textarea> ,而不是<textfield> ; 两者都可以由用户编辑。 我想添加我写的<p>static text</p> ,以供用户阅读。 怎么会这样呢?
我开始在jsfiddle中使用AngularJS的forms,我已经遇到了一个问题,一个非常简单的表单不能按预期工作。 我所有的是一个命名的forms,它没有出现在某种原因的范围(我期待一个FormController实例)。 我有一个小提琴设置,下面是基本的代码: HTML <div id="mainContainer" ng-app="angularTest" ng-controller="MainCtrl"> <h1>The Form</h1> <form name="theForm"> <input name="myName" type="text" ng-model="model.name" /> <input name="submit" type="submit" /> </form> </div> JS var app = angular.module('angularTest', []); app.controller('MainCtrl', ['$scope', function($scope) { $scope.model = { name: 'Model Name' }; console.log($scope.theForm); //displays 'undefined' }]); 我无法在jsfiddle上find很多直接的示例,所以我不确定这是否会与像这样的网站发生奇怪的交互(我发现大部分示例都没有使用正式的控制器)。 我已经尝试过Plunker检查,但是我遇到了同样的问题。 我确信我错过了一些非常明显的东西,但我看不到其他很多东西要改变或调整。 任何帮助是极大的赞赏!
是否有可能使两个input值的HTML5滑块,例如select一个价格范围? 如果是这样,怎么办?
当我不需要他们的时候,我有一个表格可以根据需要出现几个字段。 这是来自models.py的表单 class CircuitForm(ModelForm): class Meta: model = Circuit exclude = ('lastPaged',) def __init__(self, *args, **kwargs): super(CircuitForm, self).__init__(*args, **kwargs) self.fields['begin'].widget = widgets.AdminSplitDateTime() self.fields['end'].widget = widgets.AdminSplitDateTime() 在实际的电路模型中,这些字段是这样定义的: begin = models.DateTimeField('Start Time', null=True, blank=True) end = models.DateTimeField('Stop Time', null=True, blank=True) 我的views.py这是在这里: def addCircuitForm(request): if request.method == 'POST': form = CircuitForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect('/sla/all') form = […]
这使我疯狂,我在枪口下,不能再花一整天的时间在这个上面。 我试图在组件内手动设置一个控制值('dept'),它只是不工作 – 即使是新的值logging到正确的控制台。 这里是FormBuilder实例: initForm() { this.form = this.fb.group({ 'name': ['', Validators.required], 'dept': ['', Validators.required], 'description': ['', Validators.required], }); } 这是接收选定部门的事件处理程序: deptSelected(selected: { id: string; text: string }) { console.log(selected) // Shows proper selection! // This is how I am trying to set the value this.form.controls['dept'].value = selected.id; } 现在当表单被提交时,我注销了这个表单,这个表单仍然是空的! 我见过其他人使用updateValue()但这是beta.1,我不认为这是一个有效的方法调用控件。 我也试图调用updateValueAndValidity()没有成功:(。 我只是在表单元素上使用ngControl="dept" ,就像我正在处理表单的其余部分,但是它是一个自定义的指令/组件。 […]
我正在Symfony2上使用以下控制器代码的login表单 public function loginAction(Request $request) { $user = new SiteUser(); $form = $this->createForm(new LoginType(), $user); if ($request->getMethod() == 'POST') { $form->bindRequest($request); $data = $form->getValues(); // Need to do something with the data here } return $this->render('GDSiteBundle::header.html.twig', array('form' => $form->createView())); } 但是我收到以下警告: 警告:array_replace_recursive()[function.array-replace-recursive]:参数#1不是\ vendor \ symfony \ src \ Symfony \ Component \ Form \ Form.php中的一个数组593 […]
我使用这种方法: http : //plnkr.co/edit/A6gvyoXbBd2kfToPmiiA?p=preview只validation模糊领域。 这工作正常,但我也想validation他们(并因此显示这些字段的错误,如果有的话),当用户点击“提交”button(不是一个真正的提交,而是一个数据ng单击调用一个函数) 点击该button时,是否有某种方法可以再次触发所有字段的validation?