好的,所以我有这个下拉菜单,您可以在其中选择多个值.现在假设我要编辑我的信息并创建一个包含多个选定值的下拉菜单.试图弄清楚它是怎么回事,但没有结果.
让我们说:
$selected = array(3, 4);
$options = array(1,2,3,4);
echo $this->Form->select('Attendees', $options,array('multiple' => true, 'selected' => $selected));
Run Code Online (Sandbox Code Playgroud)
我已经使用过此代码,但没有选择任何内容.
我通过Html.LabelFor帮助器在foreach语句中显示一个GuarantorName.
但是,我没有得到预期的结果.
它不是显示GuarantorName的实际值,而是简单地打印如下:Label值表示实际的字段名称是:GuarantorName,而我需要该字段的名称的实际值(如"Bill Yeager"),我在调试过程中验证了各种不同的名字.
在调试过程中,我可以在列表中看到我在集合中有实际的名字.
我怎么能做到这一点?
以下是我在守则中的观点:
@foreach (var item in Model.Guarantors)
{
<td>
@Html.CheckBoxFor(model => item.isChecked)
@Html.LabelFor(model => item.GuarantorName)
</td>
}
Run Code Online (Sandbox Code Playgroud)
如果我试试这个,我会收到以下错误:
@Html.DisplayFor(model => item.GuarantorFirstName + item.GuarantorLastName)
Run Code Online (Sandbox Code Playgroud)
异常详细信息:System.InvalidOperationException:模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式.
Source Error:
Line 95: <td>
Line 96: @Html.CheckBoxFor(model => item.isChecked)
Line 97: @Html.DisplayFor(model => item.GuarantorFirstName + item.GuarantorLastName)
Line 98: </td>
Line 99: }
Run Code Online (Sandbox Code Playgroud) 我在模板new.html.erb中有一个form_for,我正常保存到数据库,然后成功发送电子邮件.我希望邮件程序发送相同的new.html.erb作为正文并传递模型,以便完全填充表单.我收到以下错误:
undefined method `protect_against_forgery?' for #<#<Class:0x000000049d7110>:0x000000049d4690>
Run Code Online (Sandbox Code Playgroud)
在form_for标记之后的行上(因为它注入了我认为的auth令牌标记).有没有办法可以规避这一点,以便我可以在邮件中重复使用该模板?
这是邮件代码的样子
class MaintenanceMailer < ActionMailer::Base
helper :application
def request_email(maintenance)
mail :to => maintenance.community.email, :subject => "Maintenance" do |format|
format.html { render :layout => 'default', :template => 'maintenance/new' }
end
end
end
Run Code Online (Sandbox Code Playgroud) 我正在尝试为包含从散列中的集合填充的选择框的模型设置表单.
具体来说,我的员工模型有一个角色哈希:
ROLES = {1 => "Lead", 2 => "Engineer", 3 => "Intern" }
Run Code Online (Sandbox Code Playgroud)
还有一个验证器:
validates_presence_of :role
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想使用此信息填充表单中的选择框.像这样的东西:
<%= form_for @employee do |f| %>
<%= label_tag :role, "Role" %>
<%= f.select :employee, :role, Employee::ROLES %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
虽然我可以在选择框中显示值,但数据不是序列化的.相反,我收到"角色不能为空"的验证消息.
我的控制器的create方法如下所示:
def create
@employee = Employee.new(params[:employee])
if @employee.save
redirect_to employees_path, :notice => "Successfully created a new employee."
else
render :action => 'new'
end
end
Run Code Online (Sandbox Code Playgroud)
最后,我的问题是如何使用模型中的哈希填充选择框并将选择框的值正确保存到数据库中员工模型的列中?
我正在研究我的第一个Rails应用程序.我有点卡住了时间.我正在研究食谱应用程序.我需要添加两个字段.
在这两个中,我想添加两个字段来计算准备餐点所需的总时间.
我接近它错误的方式,没有逻辑:(.基本上我有两个字段,我使用f.select选择预定义的时间.但我的方法的问题是,当添加两个,它忽略了格里高利格式例如40分钟+ 50分钟将变为90分钟而不是1小时30分钟.
我很感激社区的帮助.
以下代码按预期工作,使用@the_date作为默认选定日期.
<%= date_select("the_date", "", :default => @the_date ) %>
Run Code Online (Sandbox Code Playgroud)
但是,如果没有日期,则需要显示空白.以下代码显示空白,但即使定义了日期,也会强制默认选择为空白.
<%= date_select("patient_details[birth_date]", "", { :default => @the_date, :include_blank => true } ) %>
Run Code Online (Sandbox Code Playgroud)
如何将默认选择设置为日期,如果日期为零则将其设置为空白?
在Rails 3.07中工作.
谢谢.
我正在使用 hiccup 实现一个简单的下拉菜单:
;DATASET/CREATE
(defn get-cols-nms [table]
"This function gets the list of columns of a specific table".
(do (db/cols-list table)))
(defpartial form-dataset [cols-list]
(text-field "dataset_nm" "Input here dataset name")[:br]
(drop-down "table" tables-n)
(submit-button "Refresh")[:br]
(mapcat #(vector (check-box %) % [:br]) cols-list)
)
(defpage "/dataset/create" []
(common/layout
(form-to [:post "/dataset/create"]
(form-dataset (get-cols-nms (first tables-n))))))
(defpage [:post "/dataset/create"] {:as ks}
(common/layout
(let [table (ks :table)]
(form-to [:post "/dataset/create"]
(form-dataset (get-cols-nms table))))))
Run Code Online (Sandbox Code Playgroud)
我需要的是在特定表上选择下拉列表时发出发布请求(因为我认为这是唯一的方法,但我愿意接受建议)(以便“get-cols-nms”得到使用选定的表调用)。这样,当在下拉列表中选择数据库的表时,表列会自动显示。
所以,归根结底,重点是让我更好地理解这个函数:
(drop-down "table" tables-n)
Run Code Online (Sandbox Code Playgroud)
我认为要执行我想要的操作,我需要标签具有调用 javascript 函数的“onchange”属性。但我不知道:1)我是否可以使用 hiccup form-helper …
我需要在占位符中显示一个特殊字符以供输入。
有什么建议么?
echo $this->Form->control('inputName',
[
'placeholder' => 'ℓ'
]
);
Run Code Online (Sandbox Code Playgroud)
输出:
<input name='inputName' placeholder='ℓ'>
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个表单,用作控制器上的destroy方法的确认.在我的路线中,我有:
resources :leagues do
get 'delete', :on => :member
end
Run Code Online (Sandbox Code Playgroud)
在我的delete.html.erb中,我有以下内容:
<% form_for current_league, :html => {:method => :delete} do |form| %>
<%= form.submit 'Yes' %>
<%= form.submit 'No', :name => 'cancel' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
current_league是一个由以下定义的辅助函数:
def current_league
@current_league ||= League.find_by_id(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
所以问题在于生成的表单只编辑联盟模型,如form method ="post"所示.
<form accept-charset="UTF-8" action="/leagues/1" class="edit_league" id="edit_league_1" method="post">
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" />
<input name="_method" type="hidden" value="delete" />
<input name="authenticity_token" type="hidden" value="abcdefg" />
</div>
<input id="league_submit" name="commit" type="submit" value="Yes" />
<input id="league_submit" name="cancel" type="submit" value="No" …Run Code Online (Sandbox Code Playgroud) 这是我长期以来一直要问的一个问题,但到目前为止,它已经接受了它作为"Rails魔术".正如标题所述,为什么Rails形成帮助器看起来像一个do循环?如果您查看官方的Rails文档,它似乎没有解释这一点,它只是通过给出以下作为基本示例直接跳转:
<%= form_tag do %>
Form contents
<% end %>
Run Code Online (Sandbox Code Playgroud)
那么这里究竟发生了什么?为什么表单似乎是创建循环而不是其他语言中没有所述循环的输入表单.
<%= form_for @person, url: {action: "create"} do |person_form| %>
<%= person_form.text_field :name %>
<%= fields_for @person.contact_detail do |contact_details_form| %>
<%= contact_details_form.text_field :phone_number %>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud) form-helpers ×10
php ×2
ruby ×2
actionmailer ×1
actionview ×1
asp.net-mvc ×1
cakephp ×1
cakephp-2.0 ×1
cakephp-3.0 ×1
clojure ×1
do-loops ×1
hash ×1
hiccup ×1
recipe ×1
rest ×1
select ×1
selected ×1
timer ×1