#36 楼 @_samqiu php 我没接触过,所以领会不深,我在一个 view 页面里面的代码头部加了一下你给的语句,报错信息如下:
Started GET "/wktime/edit?project_Id=2&startday=2013-04-21&tab=wktime&user_id=3" for 127.0.0.1 at 2013-07-16 11:34:56 +0800 Processing by WktimeController#edit as HTML Parameters: {"project_Id"=>"2", "startday"=>"2013-04-21", "tab"=>"wktime", "user_id"=>"3"} Current user: xwj (id=5) Rendered plugins/redmine_wktime/app/views/wktime/edit.html.erb within layouts/base (46.9ms) Completed 500 Internal Server Error in 297ms
ActionView::Template::Error (undefined local variable or method current_user' for #<#<Class:0x39bab70>:0x3ea60a8>):
1: <%= debug current_user %>
2:
3: <%= stylesheet_link_tag 'wk-time', :plugin => "redmine_wktime" %>
4:
plugins/redmine_wktime/app/views/wktime/edit.html.erb:1:in
plugins_redmine_wktime_app_views_wktime_edit_html_erb__393893685_32842176'
actionpack (3.2.13) lib/action_view/template.rb:145:in block in render'
activesupport (3.2.13) lib/active_support/notifications.rb:125:in
instrument'
actionpack (3.2.13) lib/action_view/template.rb:143:in `render'
你给的这句话的添加是不是有讲究的?
#28 楼 @luikore 路径下是有几个新生成的文件夹。
是安装的时候,开头出现的那句话 WARNING: Error fetching data: too many connection resets (http://production.s3. rubygems.org/specs.4.8.gz) 还有安装过程中出现的类似语句对整体有影响么?
unable to convert "\x8D" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry-doc/core_docs_18/object_types, skipping unable to convert "\x9A" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry-doc/core_docs_19/object_types, skipping unable to convert "\xED" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry-doc/core_docs_20/object_types, skipping
#13 楼 @blacktulip 谢谢你的帮助,你发的这个链接是怎么安装和使用 pry 的介绍是吧,我在我的机器上用 执行了开头的两个命令,出现这样的信息,是不是表示我机器上还没有 pry?
C:\Sites\redmine-2.3.0>gem install pry pry-doc WARNING: Error fetching data: too many connection resets (http://production.s3. rubygems.org/specs.4.8.gz) Fetching: slop-3.4.4.gem (100%) Fetching: method_source-0.8.1.gem (100%) Fetching: win32console-1.3.2-x86-mingw32.gem (100%) Fetching: pry-0.9.12.2-i386-mingw32.gem (100%) Successfully installed slop-3.4.4 Successfully installed method_source-0.8.1 Successfully installed win32console-1.3.2-x86-mingw32 Successfully installed pry-0.9.12.2-x86-mingw32 Fetching: yard-0.8.6.2.gem (100%) Fetching: pry-doc-0.4.6.gem (100%) Successfully installed yard-0.8.6.2 Successfully installed pry-doc-0.4.6 6 gems installed Installing ri documentation for slop-3.4.4... Installing ri documentation for method_source-0.8.1... unable to convert "\xE2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/method_source.rb, skipping Installing ri documentation for win32console-1.3.2-x86-mingw32... Installing ri documentation for pry-0.9.12.2-x86-mingw32... unable to convert "\xE2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry/terminal.rb, skipping Installing ri documentation for yard-0.8.6.2... Installing ri documentation for pry-doc-0.4.6... unable to convert "\x8D" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry-doc/core_docs_18/object_types, skipping unable to convert "\x9A" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry-doc/core_docs_19/object_types, skipping unable to convert "\xED" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry-doc/core_docs_20/object_types, skipping Installing RDoc documentation for slop-3.4.4... Installing RDoc documentation for method_source-0.8.1... unable to convert "\xE2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/method_source.rb, skipping Installing RDoc documentation for win32console-1.3.2-x86-mingw32... Installing RDoc documentation for pry-0.9.12.2-x86-mingw32... unable to convert "\xE2" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry/terminal.rb, skipping Installing RDoc documentation for yard-0.8.6.2... Installing RDoc documentation for pry-doc-0.4.6... unable to convert "\x8D" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry-doc/core_docs_18/object_types, skipping unable to convert "\x9A" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry-doc/core_docs_19/object_types, skipping unable to convert "\xED" to UTF-8 in conversion from ASCII-8BIT to UTF-8 to GBK for lib/pry-doc/core_docs_20/object_types, skipping
C:\Sites\redmine-2.3.0>rvm gemset use global 'rvm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
C:\Sites\redmine-2.3.0>
#29 楼 @zj0713001 收到你的回复,感动 ing,很感谢你在忙碌的工作中这么热心的帮助我,这块东西对于初学的我而言,感觉牵涉的东西纵横交错,有不少想请教的,在这里都贴出来么怕影响版面,所以之前问你是否有其他联系方式,方便进一步请教。
#26 楼 @zj0713001 问个问题,这段代码中 set_project_issues(@xxxx)
,依你看是做什么用?
set_project_issues(@entries)
if @entries.blank? && !params[:prev_template].blank?
@prev_entries = prevTemplate(@user.id)
if !@prev_entries.blank?
set_project_issues(@prev_entries)
@prev_template = true
end
end
还有第二个问题,我在之前我贴出来的那个 view 的 erb 文件中看到这段代码,是不是就是引用@prev_template
的地方
<% if !entry.blank? %>
<% if !issueWritten %>
<% # this is a new Row %>
<% # close the previously opened row first %>
<%= render :partial => 'edit_hours', :locals => {:entry => nil, :isTemplate => false,
:padAt => 'end', :padTill => 8}%>
<%= render :partial => 'edit_issues2', :locals => {:entry => entry, :isTemplate => false}%>
<% issueWritten = true %>
<% end %>
<% # fill the days till the current day %>
<%= render :partial => 'edit_hours', :locals => {:entry => nil, :isTemplate => false,
:padAt => 'begin', :padTill => i+1}%>
<%= render :partial => 'edit_hours', :locals => {:entry => entry, :isTemplate => false,
:padAt => 'begin', :padTill => i+2}%>
<% thours[i] += entry.hours unless @prev_template%>
<% @total_hours += entry.hours unless @prev_template%>
<% currencySym = controller.getUnit(entry) %>
<% end %>
<% end %>
<% # write only the firt row for previous week template
break if @prev_template %>
<% end %>
<% end %>
#26 楼 @zj0713001 难关攻破了,我的 ruby 学习之路估计就可以出师了,@zj0713001 ,再帮帮女流一把如何。
#24 楼 @zj0713001 第二个问题,凭我目前的能力还欠缺:( 首先感谢你这么热心的帮助我,弱弱的问一下,你用聊天工具不?能否求一个,方便我向你进一步请教。
#22 楼 @zj0713001 粗心,没注意_和。的区别,照你说的改了,还是老样子。
#20 楼 @zj0713001 你说“那你的代码里就得写是 @selected_pro.id 而不是 @selected_pro_id”
你的意思是我在 prevTemplate 函数里面 " and project_id=#{@selected_pro_id}"+
这句话应该这样? " and project_id="+ @selected_pro_id+
#18 楼 @zj0713001 对于第一,我在一个 edit.html.erb 代码里加了这行代码,是不是就能传递参数过去?我查看 edit 页面的源代码,是能得到我要的 project_id 值的。
<%= render :partial => 'row_template' %>
<!--表单头-->
<%= form_tag({:controller => controller.controller_name, :action => 'update'}, :method => :post, :id => 'wktime_edit') do %>
<h2><%= l(:label_wktime) %></h2>
<%=h hidden_field_tag('tab', "#{controller_name}") %>
<!--add project_id Parameter-->
<%=h hidden_field_tag('project_id', "#{@selected_project.id}") %>
<%= render :partial => 'edit_header' %>
对于第二。我还不理解 :$
#13 楼 @lidashuang 谢谢你,用 chrome 看是好多了
@zj0713001 谢谢你的建议,之前我在网上也看了一些相关初级入门文档,因为有代码要改,想边调试边学习,所以也没有很充足的全面学习。对 ruby 这门语言是零基础,先前也不知道好的书和资料哪里有,加上英文不太好,看网上的资源悟性不高吧 :$
**prevTemplate函数**
def prevTemplate(user_id)
prev_entries = nil
noOfWeek = Setting.plugin_redmine_wktime['wktime_previous_template_week']
if !noOfWeek.blank?
entityNames = getEntityNames
**这段是我修改后的sql语句,增加了一个project_id 项目id的结果集删选**
sqlStr = "select t.* from " + entityNames[1] + " t" +
" inner join (select " + getDateSqlString('spent_on') + " as startday" +
" from " + entityNames[1] + " where user_id = " + user_id.to_s +
" group by startday order by startday desc limit " + noOfWeek.to_s + ") as v" +
" on " + getDateSqlString('t.spent_on') + " = v.startday where user_id = " + user_id.to_s +
" and project_id=#{@selected_pro_id}"+
" order by t.project_id, t.issue_id, t.activity_id"
=begin
**这段是原始最初的sql语句**
##oldsql
sqlStr = "select t.* from " + entityNames[1] + " t" +
" inner join (select " + getDateSqlString('spent_on') + " as startday" +
" from " + entityNames[1] + " where user_id = " + user_id.to_s +
" group by startday order by startday desc limit " + noOfWeek.to_s + ") as v" +
" on " + getDateSqlString('t.spent_on') + " = v.startday where user_id = " + user_id.to_s +
" order by t.project_id, t.issue_id, t.activity_id"
=end
prev_entries = TimeEntry.find_by_sql(sqlStr)
end
prev_entries
end
修改页面的 view 嵌套了好几个页面,我把自己分析的觉得是主要的一张.erb 文件帖上来。
<%
@wday_index = 1
@trOpen = false
@row = 0
@total_hours = 0.0
thours = nums = Array[0.0, 0.0, 0.0, 0.0,0.0, 0.0, 0.0]
prev_entry = nil
entry = nil
currencySym = ""
%>
<div class="wk-contextual">
<% if @editable %>
<%= link_to l(:button_add_row), "javascript:addRow();projectChanged(document.getElementsByName('time_entry[][project_id]'),0);", :class => 'icon icon-time-add' %>
<% end %>
</div>
<table id="issueTable" class="list time-entries">
<thead>
<tr>
<%= render :partial => 'issue_header'%>
</tr>
</thead>
<tbody>
<% unless entries.blank?
col_values = []
matrix_values = []
weeklyHash = getWeeklyView(entries, controller.getUnitLabel, false)
weeklyHash.each do |key, matrix|
matrix.each do |rows|
issueWritten = false
rows.each.with_index do |entry, i|
%>
<% if !entry.blank? %>
<% if !issueWritten %>
<% # this is a new Row %>
<% # close the previously opened row first %>
<%= render :partial => 'edit_hours', :locals => {:entry => nil, :isTemplate => false,
:padAt => 'end', :padTill => 8}%>
<%= render :partial => 'edit_issues2', :locals => {:entry => entry, :isTemplate => false}%>
<% issueWritten = true %>
<% end %>
<% # fill the days till the current day %>
<%= render :partial => 'edit_hours', :locals => {:entry => nil, :isTemplate => false,
:padAt => 'begin', :padTill => i+1}%>
<%= render :partial => 'edit_hours', :locals => {:entry => entry, :isTemplate => false,
:padAt => 'begin', :padTill => i+2}%>
<% thours[i] += entry.hours unless @prev_template%>
<% @total_hours += entry.hours unless @prev_template%>
<% currencySym = controller.getUnit(entry) %>
<% end %>
<% end %>
<% # write only the firt row for previous week template
break if @prev_template %>
<% end %>
<% end %>
<% else -%>
<% # if there are no entries, put an empty row%>
<% currencySym = controller.getUnit(nil) %>
<%= render :partial => 'edit_issues2', :locals => {:entry => nil, :isTemplate => false}%>
<% end %>
<% # pad any incomplete days %>
<%= render :partial => 'edit_hours', :locals => {:entry => nil, :isTemplate => false,
:padAt => 'end', :padTill => 8}%>
<!-- row for putting the total -->
<tr>
<td class="project"></td>
<td class="issue"></td>
<td class="activity"></td>
<td class="comments"></td>
<td ></td> <!-- for currency -->
<td></td>
<td></td>
<% thours.each_with_index do |th,i| %>
<td align="center"><%= currencySym %> <span id=<%= "day_total_#{i+1}" %>><%= ("%.2f" % th) %></span></td>
<% end %>
<td>
<b> <%= l(:label_total) %>: <%= currencySym %> <span id="total_hours"><%= ("%.2f" % @total_hours) %></span></b>
<%=h hidden_field_tag('total', ("%.2f" % @total_hours) ) %>
<%=h hidden_field_tag('unit', currencySym) %>
</td>
</tr>
<% if controller.showWorktimeHeader %>
<!-- Remaining Hours -->
<%= render :partial => 'worktime_header', :locals => {:str => 'remaining_hours', :isEditable => false, :value => '0.0'}%>
<% end %>
</tbody>
</table>
<% if @wktime.nil? || @wktime.status == 'n' || @wktime.status == 'r' %>
<%= submit_tag l(:button_save), :id => 'wktime_save', :name => 'wktime_save', :disabled => !(@row > 0)%>
<% if !Setting.plugin_redmine_wktime[:wktime_use_approval_system].blank? &&
Setting.plugin_redmine_wktime[:wktime_use_approval_system].to_i == 1 %>
<%= submit_tag l(:button_submit),:id => 'wktime_submit', :name => 'wktime_submit', :onclick => "return validateMinhour('#{controller.minHour}','#{getNonWorkingDayColumn()}');" , :disabled => !(@row > 0)%>
<% end %>
<% end %>
<% if !Setting.plugin_redmine_wktime[:wktime_use_approval_system].blank? &&
Setting.plugin_redmine_wktime[:wktime_use_approval_system].to_i == 1 %>
<% if !@wktime.nil? && @wktime.status == 's' %>
<%= submit_tag l(:button_wk_unsubmit), :name => 'wktime_unsubmit', :disabled => !(@row > 0)%>
<% if !@manage_projects.blank? &&
(@user.id != User.current.id ||(!Setting.plugin_redmine_wktime[:wktime_own_approval].blank? && Setting.plugin_redmine_wktime[:wktime_own_approval].to_i == 1)) %>
<%= submit_tag l(:button_wk_approve), :name => 'wktime_approve', :disabled => !(@row > 0)%>
<%=h hidden_field_tag('wktime_notes', "") %>
<% # the jquery dialog box doesn't port the reject button value%>
<%=h hidden_field_tag('hidden_wk_reject', "") %>
<%= submit_tag l(:button_wk_reject), :name => 'wktime_reject', :disabled => !(@row > 0),
:onclick => "return showNotes();" %>
<% end %>
<% elsif !@wktime.nil? && @wktime.status == 'a' %>
<% if !@manage_projects.blank? && (@user.id != User.current.id ||(!Setting.plugin_redmine_wktime[:wktime_own_approval].blank? && Setting.plugin_redmine_wktime[:wktime_own_approval].to_i == 1)) %>
<%= submit_tag l(:button_wk_unapprove), :id => 'wktime_unapprove', :name => 'wktime_unapprove'%>
<% end %>
<% end %>
<% end %>
<div class="splitcontentright">
<div class="contextual">
<% if @editable %>
<%= link_to l(:button_add_row), "javascript:addRow();projectChanged(document.getElementsByName('time_entry[][project_id]'),0);", :class => 'icon icon-time-add' %>
<% end %>
</div>
</div>
<%= context_menu time_entries_context_menu_path %>
@juanito 你说的 这句话,我没理解 :$,再弱弱的问一下。
你也可以透過點擊頁面的 <> 取得 raw markdown。
@Juanito 谢谢你这么详细的解释,感动 ing... ^_^
@levan 我用 ie8
@juanito,不好意思,对 ruby 这门技术还不太了解,你说的“Markdown 語法幫助”,之前不知道, 在你说回复框后,我看到这行字“按“M”键查看更多 帮助。”
我按 m 没反应,点击“帮助”超链接,弹出来的框是偏移的,文字内容看不完整。