如何附加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中扩展"动态形式的多个子模型"教程.
尝试路由:
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。
其他人可以确认这是一个错误吗?
我正在制作一个具有以下属性的应用程序,我正在创建一个单一的表单,以便能够保存一个目标、一个目标的任务、一个目标的里程碑和一个里程碑的任务。
#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
所以,我已经在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) 我需要将表单提交到外部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 =地毯及提交=帖子
我希望它没有引用任务.
我正在尝试用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) 如何将自定义类添加到 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)
但两者都会产生意外的错误。
我只是自定义输入标签以在提交表单时显示验证错误,并希望更改文本颜色。
使用 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 和模式匹配
我在财务模块中有以下模型:
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和带有模块的嵌套路由上执行此操作?
我一直有使用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)
如果我指定以下内容,我可以让它工作: …
form-for ×10
ruby-on-rails ×10
ruby ×2
css ×1
erb ×1
html-email ×1
nested-forms ×1
onclick ×1
prototype ×1
regex ×1
routes ×1
routing ×1
scope ×1