标签: form-for

将onClick事件附加到Rails的link_to_function

如何附加onclick事件,link_to_function以便单击事件刷新页面上的元素(使用partials)?

当用户单击生成的链接时,我想刷新包含代码的部分,以便i更新.

 def add_step_link(form_builder)
    logger.info 'ADD_STEP_LINK'
    link_to_function 'add a step' do |page|
      form_builder.fields_for :steps, Step.new, :child_index => 'NEW_RECORD' do |f|
        logger.info 'inserted js'
        html = render(:partial => 'step', :locals => { :step_form => f, :i=>@i+=1})
        page << "$('steps').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_RECORD/g, new Date().getTime()) });"
      end
    end
  end 
Run Code Online (Sandbox Code Playgroud)

我有一个更大的形式,只包含:

<%= add_step_link(technique_form) %>
Run Code Online (Sandbox Code Playgroud)

我正在尝试跟踪技术中的步骤数.在我创建的表单中,用户可以向一组指令添加新步骤.现在,我有步骤1-7的默认字段.添加一步,让您步骤8.问题是后续步骤也编号为'8'.

为了我自己的目的,我正在http://railsforum.com/viewtopic.php?id=28447中扩展"动态形式的多个子模型"教程.

prototype ruby-on-rails onclick form-for link-to-function

5
推荐指数
1
解决办法
4382
查看次数

form_for 的路由范围问题(部分)

尝试路由:

scope :shortcut do
 resources :text_elems
end
Run Code Online (Sandbox Code Playgroud)

使用带有表单部分的基本脚手架

*_form.html.erb*
<%= form_for(@text_elem, :shortcut => @shortcut) do |f| %> 
...
Run Code Online (Sandbox Code Playgroud)

问题是:当我调用编辑操作时,表单 html 显示为:

<form ... action="/25/text_elems/25">
Run Code Online (Sandbox Code Playgroud)

注:动作正确呈现形式的行动:

<form ... action="/home/text_elems">
Run Code Online (Sandbox Code Playgroud)

因此,当 form_for 处理它的块时,我的 :shortcut 参数似乎被 :id 参数打败了。现在,如果我在 form_for 块中手动设置 :url => {...} ,我可以使用 :shortcut 参数正确路由操作,但我更愿意保持代码干燥,另外我想报告如果它确实是一个错误,这个问题就交给rails。

其他人可以确认这是一个错误吗?

routing scope ruby-on-rails form-for

5
推荐指数
1
解决办法
1659
查看次数

具有多态模型的嵌套形式

我正在制作一个具有以下属性的应用程序,我正在创建一个单一的表单,以便能够保存一个目标、一个目标的任务、一个目标的里程碑和一个里程碑的任务。

#app/models/goal.rb
  has_many :tasks, :as => :achievement
  has_many :milestones
  accepts_nested_attributes_for :tasks
  accepts_nested_attributes_for :milestones

#app/models/milestone.rb
  belongs_to :goal
  has_many :tasks, :as => :achievement

#app/models/task.rb
  belongs_to :achievement, :polymorphic => true
Run Code Online (Sandbox Code Playgroud)

每当我用它的属性保存目标时,任务模型似乎对它们属于什么成就类型感到困惑,导致每个里程碑任务都被列为目标任务。我的表单、部分和控制器代码如下。

形式:

<%= nested_form_for @goal do |f| %>

  <%= render 'shared/error_messages', :object => f.object %>
  <%= render 'shared/goal_fields', :f => f %>

  <%= f.fields_for :milestones do |ff| %>
    <%= render 'shared/milestone_fields', :f => ff %>
  <% end %> 

  <%= f.fields_for :tasks do |ff| %>
    <%= render 'shared/task_fields', :f => ff %>
  <% end …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails nested-forms form-for polymorphic-associations ruby-on-rails-3

5
推荐指数
1
解决办法
5303
查看次数

使用rails Mail_form gem时出错:"未初始化的常量Mailform"

所以,我已经在stackoverflow和其他地方检查了类似问题的所有现有答案,但是无法让mail_form gem像宣传的那样工作.

这是设置:我正在尝试为我公司的网站创建一个简单的潜在客户捕获表单.我希望将表单收集的数据通过电子邮件发送到我的电子邮件帐户而不需要数据库后端,我认为这就是mail_form会变得简单.

这是我的模型,ContactForm.rb:

class ContactForm < Mailform::Base
  attribute :name,     :validate => true
  attribute :email,    :validate => /\A([\w\.%\+\-]+)@([\w]{2,})\z/i
  attribute :file,     :attachment => true
  attribute :phone 
  attribute :referral
  attribute :message
  attribute :nickname, :captcha => true

  def persisted?
    false
  end

  def headers
    {
      :subject => "New Lead",
      :to => "jonthewineguy@gmail.com",
      :from => %("#{name}" <#{email}>)
    }
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的控制器,contact_forms_controller.rb:

class ContactFormsController < ApplicationController
  def new
    @contact_form = ContactForm.new
  end

  def create
    begin
      @contact_form = ContactForm.new(params[:contact_form])
      @contact_form.request = request
      if …
Run Code Online (Sandbox Code Playgroud)

notifications ruby-on-rails html-email form-for

5
推荐指数
2
解决办法
2397
查看次数

form_for params

我需要将表单提交到外部URL,所以我有这个:

form_for(@task, :url => "https://www.external.com/Submit") do |f|)
    <%= f.hidden_field :assignmentId, :value => @assignment %>
    <%= link_to image_tag(@imagelocation) %>
....
Run Code Online (Sandbox Code Playgroud)

我正在使用form_for,因为我需要访问我的控制器变量.

外部服务器查找参数assignmentId.提交表单时,param实际上可用

params[:task][:assignmentId]
Run Code Online (Sandbox Code Playgroud)

无法在外部服务器上通过验证.

我该如何解决这个问题?如何从控制器访问变量并将"裸"参数传递给外部服务器?

[edit]这是提交参数的样子

UTF8 =%E2%9C%93&_method =把与任务%5BassignmentId%5D = 2LVQ39Z0B6UWI8NXYWJTYRKGQXIMXN和任务%5Boutput%5D =地毯及提交=帖子

我希望它没有引用任务.

ruby-on-rails form-for

5
推荐指数
1
解决办法
5660
查看次数

Rails Bootstrap如何格式化form_for(宽度网格折叠)

我正在尝试用bootstrap-sass创建一个表单.我需要找到引导类的最佳配置,使其看起来不错.它没有按照我期望的方式显示,特别是当浏览器宽度小于特定大小时,标签和表单字段之间的空格会崩溃,并且它看起来不再好看.如果它只发生在小宽度上就可以了,但事实并非如此.我真的很感激这方面的一些帮助,真的,form-horizontal用bootstrap 格式化的最佳方法是什么?

这是我的代码:

<form class="form-horizontal center" role="form">
<%= form_for @user do |f| %>
  <div class="field">
    <%= f.label :fname, "First name:", class: "col-md-4 control-label" %>
    <%= f.text_field :fname %>
  </div>
  <div class="field">
    <%= f.label :lname, "Last name:", class: "col-md-4 control-label" %>
    <%= f.text_field :lname %>
  </div>
  <div class="field">
    <%= f.label :email, "Email:", class: "col-md-4 control-label" %>
    <%= f.text_field :email %>
  </div>
  <!--div class="form-group" -->
  <div class="field">
    <%= f.label :comments, "Comments:", class: "col-md-4 control-label" %>
    <%= f.text_field :comments %>
  </div> …
Run Code Online (Sandbox Code Playgroud)

css ruby-on-rails form-for twitter-bootstrap bootstrap-sass

5
推荐指数
1
解决办法
3万
查看次数

将类添加到自定义 form_for 标签

如何将自定义类添加到 form_for else 语句?

<%= form_for(@user) do |f| %>

      .
      .
      .
      <%= f.label :name, 
        if @user.errors[:name].blank?
          'Name'
        else
          'Name ' + @user.errors[:name].to_sentence
        end
      %>
Run Code Online (Sandbox Code Playgroud)

我试过了:

else
  'Name ' + @user.errors[:name].to_sentence, class: "some_class"
end
Run Code Online (Sandbox Code Playgroud)

还尝试过:

else
   'Name ' + @user.errors[:name].to_sentence, :class => "some_class"
end
Run Code Online (Sandbox Code Playgroud)

但两者都会产生意外的错误。

我只是自定义输入标签以在提交表单时显示验证错误,并希望更改文本颜色。

ruby ruby-on-rails erb form-for

5
推荐指数
1
解决办法
9990
查看次数

带有 ruby​​ on rails 形式的正则表达式模式

使用 form_for 时是否支持模式属性?

<%= form_for order_form do |f| %>
<%= f.label "name" %>
<%= f.text_field :name, required: true %>
<%= f.label "Number" %>
<%= f.telephone_field :phone, pattern: "\\d{10}" %>
<%= f.submit %>
Run Code Online (Sandbox Code Playgroud)

我正在尝试组合一个正则表达式模式以确保电话号码的格式正确。我的问题是模式属性不会只采用正则表达式字符串

<%= f.telephone_field :phone, pattern: /\d{10}/ %> doesnt work
Run Code Online (Sandbox Code Playgroud)

所以当我把正则表达式写成一个字符串时,它会导致问题,(比如必须转义反斜杠,例如

"\\d{10}" == /\d{10}/
Run Code Online (Sandbox Code Playgroud)

我应该放弃在这个表单上使用 form_for 还是有办法一起使用 form_for 和模式匹配

ruby regex ruby-on-rails form-for

5
推荐指数
1
解决办法
4032
查看次数

form_for包含模块和命名空间

我在财务模块中有以下模型:

class Finance::BillRec < ActiveRecord::Base
  ...
  has_many :bill_rec_offs, :dependent => :destroy
  ...
end

class Finance::BillRecOff < ActiveRecord::Base
  ...
  belongs_to :bill_rec
  ...
end
Run Code Online (Sandbox Code Playgroud)

我在我的form_for上这样做:

<%= form_for([@bill_rec, @bill_rec_off]) do |f| %>
  ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

的routes.rb

namespace :finance do
  resources :bill_recs do
    resources :bill_rec_offs
  end
end
Run Code Online (Sandbox Code Playgroud)

而错误:

undefined method `finance_bill_rec_finance_bill_rec_offs_path' for #<#<Class:0x000000070757e0>:0x0000000708bec8>
Run Code Online (Sandbox Code Playgroud)

但是,路线finance_bill_rec_bill_rec_off_path(@bill_rec_off)效果很好.

如何在带有命名空间的form_for和带有模块的嵌套路由上执行此操作?

ruby-on-rails form-for nested-form-for

4
推荐指数
1
解决办法
2360
查看次数

form_for undefined方法`model_name'for :: ActiveRecord_Relation:Class

我一直有使用form_for渲染的问题.我想要一个_form.html.erb部分来处理我的问题记录的创建和编辑.当我走下去使用的路线

<%= form_for(@problem) do |f| %>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

undefined method `model_name' for Problem::ActiveRecord_Relation:Class
Run Code Online (Sandbox Code Playgroud)

在我的routes.rb中我有以下内容:

PW::Application.routes.draw do
root to: 'problems#index', via: :get
resources :problems do
member do
  post 'up_vote'
  post 'down_vote'
 end
end
Run Code Online (Sandbox Code Playgroud)

我也有问题控制器

class ProblemsController < ApplicationController
 include Concerns::Votes

 def new
  @problem = Problem.new
 end

 def index
 @problem = Problem.all
 end

 def show
 @problem = find_problem
 end

 def create
 @problem = current_user.problems.new(problem_params)
 @problem.save
 redirect_to @problem
 end


private

 def find_problem
 @problem = Problem.find(params[:id])
end

 def problem_params
params.require(:problem).permit(:name, :description, :url)
end
end
Run Code Online (Sandbox Code Playgroud)

如果我指定以下内容,我可以让它工作: …

routes ruby-on-rails form-for

4
推荐指数
1
解决办法
1万
查看次数