- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个时间跟踪应用程序。我有一个具有 time_logged
属性的 Project
模型。
我正在使用远程表单(在弹出窗口中呈现)来记录用户的时间。提交时,jQuery 事件处理程序将跟踪的时间(以秒为单位)分配给表单中的隐藏字段。所有 JS 都正确执行。
Controller 应该调用一个方法来记录针对表单中所选项目跟踪的时间,但项目永远不会更新。我认为要么是表单没有正确调用 Controller 操作,要么是我编写 Controller 的方式有问题。
但我不明白是什么。我将在下面包含相关的代码片段。
projects_controller.rb
respond_to :html, :js
def track
@project = Project.new
end
def log_time
@project = Project.find(params[:project][:id])
@project.increment_time_logged(project_log_time_params.to_i)
end
private
def project_params
params.require(:project).permit(:id, :name, :fee, :client_id)
end
def project_log_time_params
params.require(:project).permit(:time_logged)
end
项目.rb
def increment_time_logged(number_of_seconds)
self.time_logged += number_of_seconds
end
routes.rb
match '/projects/track-time', to: 'projects#track', via: 'get'
match '/projects/log-time', to: 'projects#log_time', via: 'put'
_track_time_form.html.erb
<%= javascript_include_tag "track.js.erb" %>
<div id="countdown-timer"></div>
<div id="playback-button">►</div>
<div id="track-time-form">
<%= form_for @project, :url => "/projects/log-time", remote: true do |p| %>
<ul>
<li><%= p.label :project, "Project:"%><br>
<%= p.collection_select(:id, current_user.projects, :id, :name) %></li>
<%= p.hidden_field :time_logged, :value => 0 %> <!-- value set by script in log_time.js.erb -->
<li><%= p.submit "Log time", id: "log-time-button" %></li>
</ul>
<% end %>
</div>
track.js.erb
//initialise form
timeTrackingForm = window.open("", "", "height=700,width=500");
$(timeTrackingForm.document.body).html("<%= j render( :partial => 'track_time_form' ) %>");
//assign variables
var timer = $("#countdown-timer", $(timeTrackingForm.document));
var playbackControls = $("#playback-button", $(timeTrackingForm.document));
var form = $("#track-time-form", $(timeTrackingForm.document));
var actual_form = $("#new_project", $(timeTrackingForm.document));
var formUl = $("#track-time-form ul", $(timeTrackingForm.document));
var formLi = $("#track-time-form li", $(timeTrackingForm.document));
var logTimeButton = $("#log-time-button", $(timeTrackingForm.document));
var hidden = $("input:hidden", $(timeTrackingForm.document));
var timerPaused;
//initialise timer
$(timeTrackingForm.document).ready(function(){
initialiseTimer();
style();
$(playbackControls).click(function() {
playOrPause();
});
$(actual_form).submit(function(){
$(timer).timer('pause');
timerPaused = true;
var secondsTracked = $(timer).data('seconds');
$(hidden).val(secondsTracked);
resetTimerDisplay();
});
});
function initialiseTimer() {
$(timer).timer({
format: '%H:%M:%S'
});
$(timer).timer('pause');
timerPaused = true;
}
function resetTimerDisplay() {
$(timer).timer('reset');
}
function style() {
$(timer).css({'color':'black','font-size':'50px', 'margin':'auto', 'width':'180px'});
$(playbackControls).css({'color':'#290052', 'font-size':'50px', 'margin':'auto', 'width':'55px'});
$(form).css({'width':'300px','margin':'auto'});
$(formUl).css({'list-style-type':'none'});
$(formLi).css({'margin':'0 0 25px 0','font-sizeL':'18px','font-family':'Arial'});
$(logTimeButton).css({'width':'180px','font-size':'18px','background-color':'green','color':'white','margin-top':'15px'});
}
function playOrPause() {
if (timerPaused == true) {
$(timer).timer('resume');
timerPaused = false;
}
else {
$(timer).timer('pause')
timerPaused = true;
}
}
最佳答案
您的模型似乎有问题。目前您只是更改属性,而不是将记录保存到数据库中。
改变这个
def increment_time_logged(number_of_seconds)
self.time_logged += number_of_seconds
end
对此:
def increment_time_logged(number_of_seconds)
self.time_logged += number_of_seconds
self.save
end
或者,如果您想跳过事件记录验证,请使用:
def increment_time_logged(number_of_seconds)
time = self.time_logged += number_of_seconds
self.update_attribute(:time_logged, time)
end
关于javascript - rails : Remote form in popup window not calling controller action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415556/
有什么区别 git ls-remote --heads origin 和 git ls-remote . "refs/remotes/*" ? --heads origin 版本需要一段时间才能运行,
当我执行 git remote -v 时,我得到了 origin git@xxx.yyy.cc:name fetch) origin git@xxx.yyy.cc:name (push) 为什么
要构建我的远程环境,我需要设置几个环境变量(它们在 docker-compose 文件中使用)。这些是在我的 ZSH 环境中设置的,因此从终端运行 docker-compose build 可以按预期
我有一个创建多个 Docker 镜像的项目。我想在 vscode-remote 中为每个图像设置一个 devcontainer,以便我可以为每个图像启动一个容器。 我一次只需要启动并连接到一个容器/图
我设置了以下 Remote : $ git remote korg rorg 以及以下分支: $ git branch -a * (no branch) remotes/korg/gingerbr
这是我得到的错误。我有一个简单的 .Net Remoting 设置。连接空闲几分钟后出现此错误。 对象“/7966b546_734e_410d_817a_a0e701f114f6/lfxehvbczn
我有两个远程 git 分支(称它们为“RemoteA”和“RemoteB”)。 “RemoteB”在过去的某个时候从“RemoteA”中分离出来。在那之后,许多提交已应用于两个分支,但我现在希望“Re
我知道使用下面的 git 命令我可以列出我所有的“远程”分支... [someone@someone-pc somerepo]$ git ls-remote Username for 'https:/
我最需要的是一些建议。 我有以下示例: 应用程序1.exe - 有对象 MyList 应用程序2.exe - 需要访问 MyList 并与对象交互,就好像它是从 Application2 创建的一样。
我有一个大型应用程序,它通过 .net 远程处理使用 COM 从 Web 层调用到中间层。在此模式下启动和运行非常慢。 COM 边界的两边都是我们的代码。 我希望能够(可选)在单个进程中运行它。相当多
假设我有两个 Remote :origin 和 upstream。有没有一种方法可以将对象 upstream 推送到 origin,以便其他从 origin 克隆我的 repo 的人能够运行像 git
简而言之; 如何删除远程多个 merge 的 Remote ? 更多背景; 我有一个 git 存储库,其中包含数十个已 merge 到 master 中的 Remote 。我可以使用以下方法一次删除这
我有一个仓库的本地 git clone。我当然可以使用 git remote 查看我的本地远程 origin。但是,我可以看到我的 Remote origin 的 Remote 吗?我可以查看有关这些
先决条件 - 远程服务器和客户端均已设置,客户端能够通过客户端激活的业务对象在服务器端调用方法并从服务器端接收事件。 在保持服务器和客户端运行的情况下更改远程服务器的IP地址,客户端仍然可以执行上述任
我正在设置一个新的远程主机,每次启动它时,我都会收到以下错误输出:有关如何解决此问题的任何反馈或指示? Pseudo-terminal will not be allocated because st
我只是不明白 Git 的帮助页面。那么会发生什么或有什么区别? 假设我有一个带有子模块 B 的 Git 项目 A。子模块 B 确实有一个子模块 C。克隆存储库后,A 指向 B 的特定提交。B 指向 C
我在 Java 中使用 rmi。但是有一个 ExportException“远程对象实现非法远程接口(interface)”。 这是我的代码,有人可以帮帮我吗? public interface Re
我对 git 越来越熟悉了,但是我遇到了一些让我困惑的事情。我们在这里使用本地镜像,因为我们的线路很慢。为了指向镜子,我在 .gitconfig 中有一些常用的东西。 当我想推送时,问题就来了。看来我
我设置了一个带有 conan“远程”存储库的 jfrog artifactory 来代理官方 conan-center 存储库。我看到三个不同的 conan-center URL,具体取决于我阅读的来
我无法使用 VSCode 远程 SSH 在我的远程服务器上保存任何文件,因为我不是 root 用户。 我关注了 official documentation关于如何使用 SSH 配置文件设置 ssh
我是一名优秀的程序员,十分优秀!