相关疑难解决方法(0)

有没有办法使用rails form helper来生成用于提交的按钮标记

我正在尝试创建按钮ala Wufoo(重新发现按钮元素)

我想写下面的代码如下:

<%form_tag search_path, :method => :get, :class => 'search' do %>
  <%=text_field_tag :search, params[:search] -%>
  <%=button_tag 'search', :name => nil-%>
<%end%>
Run Code Online (Sandbox Code Playgroud)

生成以下HTML(而不是输入[type ="submit"]标记)

<button type="submit" class="positive">
    <img src="/images/icons/tick.png" alt=""/> 
    Save
</button>
Run Code Online (Sandbox Code Playgroud)

方法是否已存在?或者我应该自己动手帮忙?

forms ruby-on-rails custom-tag

28
推荐指数
1
解决办法
3万
查看次数

ArgumentError:参数数量错误(1表示2)

我是Rails,MVC和CRUD的新手,我正在尝试使用更新方法来更改帖子的投票数量.我的帖子控制器更新方法中有以下代码:

def update
    @post = Post.find(params[:id])

    if params[:vote] == 'up'
        @post.update_column(:ups => @post[:ups] + 1)
    elsif params[:vote] == 'down'
        @post.update_column(:downs => @post[:downs] + 1)
    end

    flash[:notice] = "Thanks for voting! This helps us determine important issues in our schools."

    redirect_to 'Posts#index'
end
Run Code Online (Sandbox Code Playgroud)

我的routes.rb中有以下代码:

OpenMCJC::Application.routes.draw do
  root :to => 'posts#index'
  resources :posts
  match '/posts/:id/:vote', :to => 'posts#update'
end
Run Code Online (Sandbox Code Playgroud)

导航到"/ posts/3/up"后,会抛出以下错误:

ArgumentError in PostsController#update

wrong number of arguments (1 for 2)
Run Code Online (Sandbox Code Playgroud)

根据页面的请求参数是这样的:

{"id"=>"3",
"vote"=>"up"}
Run Code Online (Sandbox Code Playgroud)

你能帮我弄清楚出了什么问题吗?

ruby routing ruby-on-rails crud

9
推荐指数
2
解决办法
3万
查看次数

Rails - 如何使用link_to更改数据库中的布尔值?

在我的应用程序中,我正在尝试创建一个允许用户提交项目提案的链接.当用户准备提交以供审阅时,用户将单击该链接,这会导致布尔"submitreview"被标记为true.

我按照这篇文章作为指南:Rails 3如何使用link_to来更改db中布尔值的值?.

现在,布尔值不会从false更改为true,它也会被重定向到以下URL: http://localhost:3000/projects?submitreview=false

任何帮助将不胜感激,谢谢!

*更新*我已根据建议更新了以下代码,并在点击链接后成功更新了布尔值.应该注意的是,包含链接的这个"表单"也在新项目表单上呈现.所以我现在的问题是,当我点击新项目时<%= link_to 'Start your project', new_project_path %>,我会在下面收到以下新错误.当我删除表单中的link_to submitreview时,没有出现错误,new_project渲染效果很好.我的猜测是new_project没有为项目创建一个ID,但是有一个调用def submitreview.这可以解决吗?

Routing Error
No route matches {:action=>"submitreview", :controller=>"projects", :id=>#  ... }
Run Code Online (Sandbox Code Playgroud)

项目/ _form.html.erb

<%= link_to "Submit Proposal", submitreview_project_path(@project), method: :put, class: "btn btn-primary" %>
Run Code Online (Sandbox Code Playgroud)

projects_controller.rb

def submitreview
    @project = Project.find(params[:id])
    @project.update_attributes(submitreview: true)
    redirect_to project_path(@project)
end
Run Code Online (Sandbox Code Playgroud)

的routes.rb

resources :projects do
    member do
       get :submitreview
       put :submitreview
    end   
end
Run Code Online (Sandbox Code Playgroud)

耙路线

submitreview_project GET    /projects/:id/submitreview(.:format)                 projects#submitreview
                     PUT    /projects/:id/submitreview(.:format)                 projects#submitreview
Run Code Online (Sandbox Code Playgroud)

methods routes ruby-on-rails

3
推荐指数
1
解决办法
2706
查看次数

标签 统计

ruby-on-rails ×3

crud ×1

custom-tag ×1

forms ×1

methods ×1

routes ×1

routing ×1

ruby ×1