对于一个大学团体项目,我们正在创建一个 Rails 应用程序,可以在其中创建、访问大学课程等。
该项目的要求之一是“课程协调员必须能够将用户设置为给定课程的标记者”。为了解决这个问题,有一个角色表,它存储 user_id、course_id 和角色(在本例中为“Marker”)。
我创建了一个视图,课程协调员可以在其中从所有用户中选择一个用户并将其设置为标记。这发生在课程/分配标记页面上。该页面的控制器方法如下所示:
def assign_marker
@users = User.enrolled_users
@course = Course.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
在这里,enrolled_users 仅返回所有非管理员用户(这有效),params[:id] 是 course_id。如果我使用看跌期权,我可以看到它具有正确的值,所以这一切都有效。
我的问题发生在我处理 post 请求的函数中:
def add_marker
Role.assign_marker(params[:user_id], params[:id])
# Flash
flash[:notice] = "#{User.find(params[:user_id]).username} was assigned as Marker to #{Course.find(params[:id]).courseName}"
# Refresh
redirect_back(fallback_location: root_path)
end
Run Code Online (Sandbox Code Playgroud)
提交表单后,我发现 add_marker 将 params[:id] 视为空白。下面是我在 haml 中的表单(对应于 allocate_marker 函数)
= form_with url: 'assign_marker', :id => "#{@course.id}" do |f|
.row
.input-field
-# Display username in selection & store id as parameter
= f.collection_select(:user_id, @users, :id, :username, :include_blank => …Run Code Online (Sandbox Code Playgroud) 我在我的一个haml视图中有这个:
-form_for :news_item_comment, :url=>{:id => comment.id, :controller => 'comment' , :action => 'add_comment'}, :html => {:id => "form-#{comment.id}"} do |f|
...
Run Code Online (Sandbox Code Playgroud)
由于它真的很长很难读,我想把它分成2行.反正有没有违反haml的空白规则吗?
如何从.haml文件中引用.sass文件?
我有以下haml表达式将引用.css文件:
%link{'href' => '/stylesheets/layout.css?cache=1', 'rel' => 'stylesheet', 'type' => 'text/css'}/
Run Code Online (Sandbox Code Playgroud)
我如何引用.sass文件?
1)
- @client.getAvatars(@accountName).each do |avatar|
=avatar['deleted']
Run Code Online (Sandbox Code Playgroud)
output:false false true
2)
- @client.getAvatars(@accountName).each do |avatar|
- if(avatar['deleted'] == 'false')
=avatar['deleted']
Run Code Online (Sandbox Code Playgroud)
空输出
3)
- @client.getAvatars(@accountName).each do |avatar|
- if(avatar['deleted'] != 'false')
=avatar['deleted']
Run Code Online (Sandbox Code Playgroud)
output:false false true
我不明白为什么这么奇怪,你能解释一下吗?
PS:我的工作变体是
- @client.getAvatars(@accountName).each do |avatar|
- if(!avatar['deleted'])
=avatar['deleted']
Run Code Online (Sandbox Code Playgroud)
输出:false false
我有一个Rails应用程序,并使用haml和bootstrap.一个我的表单我有两个字段用于输入文本,只显示一个,具体取决于我在控制器中设置的变量.如果有一个文本区域我想调整它,并且:rows属性可以工作,但不是列.
我也尝试使用%div:class =>'span6'来扩展 text_area,但它似乎不起作用.
= form_for [@lesson_layout, @layout_field] do |f|
.field
= f.label :field_name
= f.text_field :field_name
- case @layout_type
- when "Text Field"
.field
= f.label :field_value
= f.text_field :field_value
- when "Text Area"
.field
= f.label :field_value_long
= f.text_area :field_value_long, :rows => 5, :placeholder => 'Enter text.'
.actions
= f.submit
Run Code Online (Sandbox Code Playgroud)
编辑
尝试以下代码,它没有改变框的大小.
.field
= f.label :field_value_long
= f.text_area :field_value_long, :rows => 5, :placeholder => 'Enter text using markdown.', :html => { :style => …Run Code Online (Sandbox Code Playgroud) 所以我一直在学习ror并尝试一些形式的例子.Web中的大多数示例都是erb格式,我的文件是.haml格式.我正在尝试写一个静态的dob字段,它需要一天,一天,一年.
view
%label{:for => "patient_dob"} DOB
%date_select {Date.today,start_year => getBirthDateStart(), :end_year => getBirthDateEnd() }
module ApplicationHelper
def getBirthDateStart()
Time.now.year - 100
end
def getBirthDateEnd()
Time.now.year
end
end
Run Code Online (Sandbox Code Playgroud)
我知道我的代码没有多大意义,但希望它能解释我想要做的事情.有人能指出我正确的方向.
我是Haml的新手,我试图简单地在一个锚链接中放置一个span标签,如下所示:
.text Here is some copy.
= link_to 'Visit website', 'https://websitelink.com/', class: 'link'
%span
Run Code Online (Sandbox Code Playgroud)
这是一个错误," syntax error, unexpected keyword_ensure, expecting $end"
我如何执行这个简单的任务?
我有以下代码,以显示用户的一些记录:
= @kid.educations.each do |education|
= education.studies_centre
%br
= education.city_and_country
%br
%small
= education.academic_qualification
%hr
%br
= @kid.certificates.each do |certificate|
= certificate.certificate
%br
= certificate.city_and_country
%br
%small
= certificate.description
%hr
%br
= @kid.works.each do |work|
= work.company
%br
= work.city_and_country
%br
%small
= work.description
%hr
%br
Run Code Online (Sandbox Code Playgroud)
但是在每一条记录之后,我都会得到真实的字样,如下图所示:

我该怎么做才能解决这个问题.在此先感谢您的帮助
我有这个静态代码:
%a#carousel-selector-0.thumbnail
%img{:src => "http://placehold.it/170x100&text=one"}/
%li.span2
%a#carousel-selector-1.thumbnail
%img{:src => "http://placehold.it/170x100&text=two"}/
%li.span2
%a#carousel-selector-2.thumbnail
%img{:src => "http://placehold.it/170x100&text=three"}/
%li.span2
%a#carousel-selector-3.thumbnail
%img{:src => "http://placehold.it/170x100&text=four"}/
%li.span2
%a#carousel-selector-4.thumbnail
%img{:src => "http://placehold.it/170x100&text=five"}/
%li.span2
%a#carousel-selector-5.thumbnail
%img{:src => "http://placehold.it/170x100&text=six"}/
Run Code Online (Sandbox Code Playgroud)
这是我的每个循环,使其从db动态
- @house.attachments.each do |a|
= link_to(image_tag(a.file.url), :id => "carousel-selector-{number}", :class => "thumbnail")
Run Code Online (Sandbox Code Playgroud)
如何使{number}增量?就像在静态例子中一样?
我是Ruby on Rails的新手,我在本地机器上设置了启动包.
当我浏览它时,我在其中一个html.haml文件中找到了这个:
%p
Welcome #{@email}!
%p You can confirm your account email through the link below:
%p= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token)
Run Code Online (Sandbox Code Playgroud)
我认为这!是给用户的消息的一部分,我相信这@email是一个带有字符串文本的变量,是该人的电子邮件地址.
但是,我不太明白#电子邮件的作用.从Haml文档中我相信该#符号使得一个div作为Haml网站上的示例显示,但这并没有真正意义,所以如果有人能够解释它意味着什么我会非常感激它.
Haml网站示例:
#content
.left.column
%h2 Welcome to our site!
%p= print_information
.right.column
= render :partial => "sidebar"
Run Code Online (Sandbox Code Playgroud)